AjaxToolkit AsyncFileUpload需要启用ViewStateMode,如何避免?

时间:2012-03-29 09:37:57

标签: asp.net ajax ajaxcontroltoolkit viewstate asyncfileupload

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

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

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

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

我一块一块地重建页面,我发现这个控件需要启用Viewstate。 但是,如果页面指令中的 viewstate = disabled ,文件大小为76.6kb,而 viewstate = enabled ,则大小为99.2kb。

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

1 个答案:

答案 0 :(得分:0)

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