我正在尝试设计一个处理Employee
和Station
CRUD任务的页面,具体取决于用户的偏好。我已经对UserControl
进行了子类分类以创建EditEntityControl
并开发了两个自定义控件,这些控件派生自此基类,并且每个控件都处理Employee
或Station
对象的CRUD活动
当用户切换下拉列表中的值,触发回发时,我想动态地将正确的控件加载到页面中。这适用于每个控件的第一次加载,但是当我尝试重新加载第一个控件(加载第二个控件后)时,我收到以下错误:
无法加载视图状态。 viewstate所在的控制树 正在加载必须与用于保存的控制树匹配 在上一个请求期间查看状态。例如,添加时 动态控制,回发期间添加的控件必须匹配 初始期间添加的控件的类型和位置 请求。
我还看到第二个控件的初始加载有一些奇怪的行为,其中数据绑定没有绑定到正确的控件(例如,设置按钮的文本而不是控件上的文本框)。
有没有办法处理这种情况?或者,有没有办法清除ViewState
并完全重新请求页面来解决此错误?看来,如果我能解决PostBacks之间的这种ViewState
混乱/混乱,其他一切都按设计工作。
答案 0 :(得分:0)
上述评论中提出了很好的建议,但最终指出正确解决方案的是Joel Coehoorn对this question的回答。
我加载控件OnInit,然后在SelectionChanged
事件中吹掉OnInit更改并根据需要重新创建正确的控件。感谢您提供有关使未使用的控件不可见的其他建议。我会记住这一点,以备将来参考。