【问题标题】:Including ASPX file on a page via AJAX - viewstate error on post back only with IE通过 AJAX 在页面上包含 ASPX 文件 - 仅使用 IE 回发时出现视图状态错误
【发布时间】:2015-07-18 14:49:35
【问题描述】:

我有一个 ASP.Net Web 应用程序,它有一个页面,其中包含在 Jquery 选项卡中显示的各种 GridView。这在 Firefox 和 Chrome 中运行良好,但页面在 IE 中呈现速度很慢。所以我想不是一次加载所有的gridviews,而是在用户点击标签时加载它们。

所以我设置了一个新的 aspx 页面,它接受要显示的参数。这一切在所有浏览器中都可以正常工作,并且页面现在在 IE 中又好又快。

然而,IE 又来咬我了,因为一旦页面遇到回发,它就会产生这个异常:

此页面的状态信息无效,可能已损坏。

据我了解,这是因为通过 AJAX 加载的 GridView 控件必须位于带有 runat="server" 的 <form> 标记内,这会改变整个页面的视图状态。因此,当它回发原始页面时,它似乎失去了它的视图状态。

然后我尝试关闭包含的 aspx 中的视图状态。通过EnableViewState="false",但这仍然不起作用。

我很困惑 Chrome 和 Firefox 是如何正常的,但只有 IE 出现 ViewState 错误。我还能做些什么来确保子页面不会改变 IE 中的 ViewState?

也许如果 ASP.Net 没有检测到浏览器是 IE,它不会做任何破坏页面的事情?

【问题讨论】:

  • 你有任何控制台(我是指浏览器的开发者控制台)错误吗?
  • 不 - 没有记录到开发者控制台:(

标签: asp.net ajax


【解决方案1】:

将 asp.net 应用程序的 web.config 文件中的 enableEventValidation 属性设置为 false。

如果使用 IIS6,请确保关闭 IIS 压缩。

如果可能,将OnClientClick 事件添加到按钮,这会导致回发,并调用一个函数,通过ajax 删除添加的控件。

【讨论】:

    【解决方案2】:

    最后,经过大量研究,我认为我尝试做的事情是不可能的。

    作为一种解决方法,我选择在 jQuery 选项卡中插入一个 iFrame,然后在其中加载 gridview。这不会打乱父页面的视图状态。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-12-30
      • 2013-07-08
      • 2012-02-03
      • 2017-02-27
      • 1970-01-01
      • 2015-10-30
      • 1970-01-01
      相关资源
      最近更新 更多