0

我知道这是一个微不足道的问题,但无论如何我想知道它是否可以解决。

我有一个带有嵌套母版页和 JavaScript 的 ASP.NET 网页表单页面。我广泛使用 jQuery 和 Ajax 调用。加载页面后,与服务器的所有通信都通过 Ajax 调用完成,因此我不需要启用 ViewState,这会导致 HTML 输出代码减少。

我现在必须实现一个用户可以上传文件的页面。所以我使用了AjaxToolkitFileUpload的AsyncFileUpload控件。上传文件后,我对服务器进行 Ajax 调用以请求文件名。

一切正常,但我注意到 FireBug 在 OnClientUploadStarted 和 OnClientUploadComplete 事件之间的每个文件上传发现 10 个错误。该文件已正确上传,并且客户端的事件也可以正常工作。但我不能忽视抛出错误的事实,所以我去寻找问题所在。

我一块一块地重建页面,我发现这个控件需要启用 Viewstate。然而,在 page 指令中使用viewstate=disabled文件大小为 76.6kb,使用viewstate=enabled文件大小为 99.2kb。

同样,我知道这很简单,不会影响网站的性能,但很高兴知道。
- 为什么这个控件需要视图状态?(我想是因为它实际上将文件发布到 iFrame 或类似的东西?)
- 我怎样才能减少视图状态并让这个控件仍然正常工作?

4

1 回答 1

0

为了减少视图状态并使这一控件正常工作,您可以在页面上启用离开视图状态并将页面的ViewStateMode设置为禁用,然后将需要视图状态的控件的 ViewStateMode 设置为启用。对于所有其他控件,它们应该默认继承父控件的设置。

于 2012-07-07T05:50:04.983 回答