2

我正在尝试设计一个页面,该页面根据用户的偏好同时处理Employee和处理 CRUD 任务。Station我已经UserControl创建一个子类EditEntityControl并开发了两个从这个基类派生的自定义控件,每个控件都处理EmployeeorStation对象的 CRUD 活动。

当用户在触发回发的下拉列表中切换值时,我想将正确的控件动态加载到页面中。这适用于每个控件的第一次加载,但是当我尝试重新加载第一个控件(加载第二个之后)时,出现以下错误:

无法加载视图状态。正在加载视图状态的控制树必须与在先前请求期间用于保存视图状态的控制树匹配。例如,当动态添加控件时,回发期间添加的控件必须与初始请求期间添加的控件的类型和位置相匹配。

我还在第二个控件的初始加载中看到了一些奇怪的行为,其中数据绑定没有绑定到正确的控件(例如,设置按钮的文本而不是控件上的文本框)。

有没有办法处理这种情况?或者,有没有办法清除ViewState并完全重新请求页面以解决此错误?看来,如果我能清除ViewStatePostBacks 之间的这种混乱/混乱,其他一切都按设计工作。

4

1 回答 1

1

上面的评论中有很好的建议,但最终让我找到正确解决方案的是 Joel Coehoorn 对这个问题的回答。

我加载控件 OnInit,然后在SelectionChanged事件中清除 OnInit 更改并根据需要重新创建正确的控件。感谢有关使未使用的控件不可见的其他建议。我会记住这一点以供将来参考。

于 2012-04-16T17:32:40.380 回答