0

在我的 ASP.NET 页面中,我必须根据下拉列表中的选定值动态选择和加载自定义控件。但是我遇到了以下问题:当动态加载控件的参数发生更改时,然后在下拉列表已更改(因此迫使我在下次重新加载页面时加载不同的动态控件),我最终出现“无法加载 ViewState”异常。我认为发生这种情况是因为 ViewState 正在尝试恢复旧的参数控制,它没有找到它。那么,有什么方法可以阻止视图状态尝试恢复不存在控件的状态?

4

4 回答 4

1

您应该最初以完全相同的方式加载控件,然后在之后更改LoadViewState或禁用您知道不会与页面同步的动态控件上的视图状态。

于 2010-04-28T15:28:26.267 回答
0

存在相同的问题,即用户添加、重新排列和/或修改了可变长度的控件列表,并且在每次回发期间都可以更改。

答案出奇的简单。

当您在将动态控件集“ EnableViewState = False ”添加到页面控件集合之前创建它时。然后不会存储视图状态信息,并且无论添加或删除或重新排序多少动态控件,其他所有内容的视图状态都将正常工作。

如果您动态添加这些,则通常无论如何都会设置所有属性,因此在我的情况下它实际上并没有创建任何工作,这非常相似。

于 2012-01-21T00:21:44.680 回答
0

听起来下拉/添加的控件的状态在您恢复视图状态之前没有恢复。如果您将下拉菜单默认为显示控件 X,并且用户将其更改为显示控件 Y,则页面必须在视图状态恢复之前将控件 Y 添加到控件集合中。

于 2010-04-28T15:28:31.327 回答
0

我对网格控制有同样的问题。我正在动态绑定数据视图,根据 DarrenMB 的解决方案,我刚刚写了 EnableViewState = false; 问题解决了。

Infragistics.Web.UI.DataSourceControls.DataView dvMesaj = new Infragistics.Web.UI.DataSourceControls.DataView();


        whdsShowMessages.DataRelations.Clear();
        whdsShowMessages.DataViews.Clear();
        whgridShowMessages.Rows.Clear();
        EnableViewState = false; //here is the solution..
        whdsShowMessages.DataViews.Add(dvKisi);
        whdsShowMessages.DataViews.Add(dvMesaj);
于 2015-07-28T07:58:37.117 回答