我的页面面临 Viewstate 加载问题。
页面有一个登录工具来登录管理员和非管理员用户。当非管理员用户登录页面并单击启用了自动回发的复选框时,会出现奇怪的行为。 (错误详情如下)
后来我发现,在左侧的导航面板中(承载链接)
侧边栏如下图所示
Security
---------
Link1
Link2
Link3
Configuration
---------
Link1
Link2
如果“配置”部分下出现更多内容,则会引发此异常。根据用户在 Page_Load 上的权限动态删除链接(从完整列表中)。
我如何追踪此类问题?我在 Visual Studio 中启用了所有异常,但没有破坏查看哪个控件导致此问题?
无法加载视图状态。视图状态所在的控制树
正在加载的控制树必须与用于保存的控制树相匹配
上一个请求期间的视图状态。例如,当添加
动态控制,回发期间添加的控件必须匹配
初始期间添加的控件的类型和位置
要求。
[HttpException (0x80004005): Failed to load viewstate. The control tree into which viewstate is being loaded must match the control tree that was used to save viewstate during the previous request. For example, when adding controls dynamically, the controls added during a post-back must match the type and position of the controls added during the initial request.]
System.Web.UI.Control.LoadViewStateRecursive(Object savedState) +380
System.Web.UI.Control.LoadChildViewStateByIndex(ArrayList childState) +144
System.Web.UI.Control.LoadViewStateRecursive(Object savedState) +214
System.Web.UI.Control.LoadChildViewStateByIndex(ArrayList childState) +144
System.Web.UI.Control.LoadViewStateRecursive(Object savedState) +214
System.Web.UI.Control.LoadChildViewStateByIndex(ArrayList childState) +144
System.Web.UI.Control.LoadViewStateRecursive(Object savedState) +214
System.Web.UI.Page.LoadAllState() +464
System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +1729
如果你看一下这里的页面循环article http://msdn.microsoft.com/en-gb/library/ms972976.aspx您可以看到视图状态在页面加载之前加载并在渲染之前保存。您正在删除视图状态加载之后的页面加载中的控件,这意味着在回发时视图状态中的数据比页面预期的要少。尝试删除预渲染中的控件,这应该在保存视图状态后发生,这应该可以解决您的问题。
詹姆士 :-)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)