我注意到在我使用updatePanel的页面上,我在ctrl + r或点击F5后出现错误。当我尝试进行异步回发时,会显示以下消息:
the state information is invalid for this page and might be corrupted
我读过Response.Cache.SetNoStore();但是在我的ff 3实例上它并没有真正起作用。
还有其他解决方案吗?我用ASP.Net 2.0
感谢您的帮助
答案 0 :(得分:1)
特别是在呈现EventValidation字段之前回发时会出现此问题。如果启用了EventValidation(默认情况下),但ASP.NET在回发时无法看到隐藏字段,则还会获得异常。如果您在完全呈现之前提交表单,则可能尚未呈现EventValidation字段,因此ASP.net无法验证您的点击。
一个解决方法当然是禁用事件验证,但您必须了解安全问题。
通常,不建议禁用EventValidation。引用MS文档
“强烈建议您不要禁用事件验证。在禁用事件验证之前,您应该确保不会构造任何可能对您的应用程序产生意外影响的回发。”。
http://msdn2.microsoft.com/en-us/library/system.web.ui.page.enableeventvalidation.aspx
另请参阅详细的帖子,其中讨论了禁用事件验证的几个优点和缺点。
http://odetocode.com/Blogs/scott/archive/2006/03/21/3153.aspx。这个链接确实有一些开发人员正在谈论你遇到的samE类型的错误。
答案 1 :(得分:0)
<body><form id="ctrlsomething">stuff</form></body>
格式...当你做回发时,表单被提交,内容控件/元素与原始控件/元素不匹配(记得你添加了东西)...因此错误。
克服这个问题的一种方法是在开始时通过javascript / jquery添加元素
$('body').append("<div id='myframe_that_ajax_will_fill_with_stuff'></div>");
这会在<div id='myframe_that_ajax_will_fill_with_stuff'></div>
之后在正文中添加</form>
,所以你可以很好
其他选项是在页面级别禁用eventvalidation / viewstate,但这可能会导致安全漏洞