此页面的状态信息无效,可能已损坏
这似乎是一个非常常见的问题。但我还没有找到解决基本问题的帖子。
我有一个严重的ajaxed应用程序,我正在遇到这个问题。 简而言之,ASPX页面比通过AJAX调用用HTML填充的一系列div更多。 如果有人对这些基本问题发表评论,我将不胜感激。我将开始一个示例应用程序,看看我是否也可以回答它们。
runat=server
控件是否会导致此问题。 runat=server
控件生成的HTML填充DIV,则触发此操作。 runat=server
控件作为ajax ctl的一部分返回之前对其进行自由切换。(例如 - 转发器非常适合构建表。我可以使用转发器,然后在将响应发送到客户端之前从HTML中删除一些语法。 如果我必须,我可以做循环.. )
4)我可以在标题中添加一些东西以使整个事情消失。
Page Language="vb"
AutoEventWireup="false"
CodeBehind="frustration.aspx.vb"
_Inherits="Portal.frustration"
EnableViewState="false"
enableViewStateMAC="false"
EnableEventValidation="false"
ValidateRequest="false"
ViewStateEncryptionMode="Never"
MasterPageFile="~/_MasterPages/Admin.Master"
谢谢, 格雷格。
答案 0 :(得分:1)
好吧,我让它工作了,但我还是放弃了.NET菜单。 由于我正在寻找一些高水平的信息,我会让社区知道我能做的事情......
当我加载AJAX页面然后使用菜单导航时,会出现viewstate问题。之所以发生这种情况,是因为在导航离开之前单击菜单会回发到我的AJAX页面。如果它只是一个超链接,就没有问题。
有问题的AJAX页面基本上是3个div。 Div_A是由文档列表组成的导航元素。 Div_B是具有一些操作按钮的1个文档的只读细节。 Div_C是一种输入形式。 div由jquery ajax调用填充。成功之后,我将替换有问题的DIV的整个innerHTML。 Div_A& Div_B会按此顺序在页面加载时自动填充。 (列表和第一份文件详情)
打破局面,只是填充Div_A导致问题。 检查显示我有一些DIV与RUNAT = SERVER。我删除了。这并没有解决问题。 整个内容周围还有一张FORM。表单标记为runat = server。 我完全删除了FORM。这允许我使用没有viewstate错误的菜单。但是,如果我单击第二个文档,导致Div_B重新加载。问题再次发生。
Div_B与所有内容都有相同的FORM。 (这些必须由Visual Studio自动放置。没有理由同时使用任何一个表单,因为DIV_A和DIV_B都是只读的) 关于DIV_B的有趣之处在于我需要RUNAT = SERVER的DIV,因为我在后面的代码中设置了innerText。 删除FORM允许我在文档之间导航,仍然可以使用没有VIEWSTATE错误的菜单。
所以: 将RUNAT = SERVER HTML元素添加到页面似乎不会破坏VIEWSTATE 将RUNAT = SERVER FORM添加到页面似乎打破了VIEWSTATE。
所以事情又回来了,但为什么这个问题会突然出现呢?不确定。很多都改变了,我不能指出任何一件事。 (当我从vs10-> vs12升级时,表格可能会自动生成)。谁知道,谁在乎...
最终 - 我不能仅仅为了.NET菜单项而继续溺爱这个问题。至于@Brad M的观点,我决定只使用一个jQuery菜单,这将消除任何批发页面回发到此页面。
稍微搜索一下,我发现了arnab_bandyopadhyays实现的横向jQuery菜单,他在这里演示:http://jsfiddle.net/yRJ9g/。
<<stackoverflow wants some code if i reference jsfiddle, so here ya go...>>
dim viewStateWorksWellWAjax as boolean =false
感谢您的建议。
格雷格