gpt4 book ai didi

asp.net - 无法加载 View 状态。正在加载 View 状态的控制树必须与用于保存 View 状态的控制树匹配

转载 作者:行者123 更新时间:2023-12-04 07:28:35 24 4
gpt4 key购买 nike

我目前正在为几个 web 项目开发一个动态核心。它有一个使用 TreeView 和菜单的核心。然后对于每个特定的项目,它将几个不同的 wuc 加载到一个主要内容中。一些商业项目使用与商业相关的 wuc,而另一些则使用不同的 wuc。所以wuc的跨度真的很大。

现在我的问题是,每当用户按下菜单项或树项时,它都会将 wuc 加载到链接到该对象的 maincontent 中。

但是我遇到了一些 View 状态错误,我已经环顾四周 2 天了,解释的解决方案都不适用于我的项目。

我所有的 wuc 都必须启用 View 状态。

循环是->

Page(Control A) 使用变量回发以将控制更改为 wucPanel(UpdatePanel) 中的 ControlB。
OnLoad LoadRequested Wuc。

当前代码是

protected void Load_Page(object sender, EventArgs e)
{
//Code to decide which wuc to load.
UserControl wucc = (UserControl)Page.LoadControl(sFilePath);
ParentControl.ContentTemplateContainer.Controls.Add(wucc);
}

我已经尝试了几个修复,比如向 wuc 添加不同的 id,但这要么会禁用处理程序等控制的内部功能,要么会生成相同的 View 状态错误。

我发现的一种解决方案是加载 ControlA,然后将其删除,然后加载 ControlB。但这禁用了我的第 3 方 Controller (Telerik) 的脚本。

我也读过关于每个typof 有不同的PlaceHolders 但是因为我希望有多达50 个不同的控件,所以我觉得这对我没有帮助。

从 Page_Load -> Page_Init 移动会产生同样的错误。

错误:

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.

最佳答案

在您的情况下 Anders,您仍然需要在 init 方法中将旧控件与您现在要添加的新控件一起添加到您的页面。保留对您刚刚添加到类级别变量中的旧控件的引用。所以像

    Control _oldControl = null;
protected void Init_Page(object sender, EventArgs e)
{
//Code to decide which wuc to load.
UserControl wucc = (UserControl)Page.LoadControl(sFilePath);
ParentControl.ContentTemplateContainer.Controls.Add(wucc);
_oldControl = wucc as Control;
//Now add the new control here.
}

//override the LoadViewState method and remove the control from the control's collection once you page's viewstate has been loaded
protected override void LoadViewState(object savedState)
{
base.LoadViewState(savedState);
ParentControl.ContentTemplateContainer.Controls.Remove(_oldControl);
}

希望这可以帮助。如果是这样,请选中此答案旁边的复选框以接受它,如果您愿意,请投票:)

关于asp.net - 无法加载 View 状态。正在加载 View 状态的控制树必须与用于保存 View 状态的控制树匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5165384/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com