在父级中禁用时,如何为子自定义控件启用ViewState?

时间:2008-10-06 17:15:52

标签: asp.net viewstate custom-server-controls

我正在尝试创建一个自定义控件,即“gridview”,如控件,但特别是对于实现某些自定义接口的业务对象。

在这样做时,我遇到了以下问题。

我有一个控件,我已禁用viewstate(我不想重新启用它),它有一个我想要启用viewstate的子控件。因为父母被禁用,我似乎无法让子控件上的视图状态工作。有没有人对如何使其发挥作用有任何想法?

3 个答案:

答案 0 :(得分:7)

您无法在另一个禁用了viewstate的控件中的控件上启用viewstate。

您唯一的选择是为外部控件启用它,然后为其中的所有控件关闭它,除了您需要viewstate的控件。

任何容器上的EnableViewState属性都将覆盖该容器内所有控件的行为。

祝你好运!

修改 您可能需要查看 CreateChildContols()方法,并使用 EnableViewState 属性枚举控件,从而为自定义控件中的每个控件禁用viewstate。

答案 1 :(得分:0)

如果您乐意手动将数据放入ViewState(而不是让ASP.NET保留您的控件状态),您可以将项目直接放入页面的ViewState,而不是控件的ViewState

即。而不是说:

this.ViewState["someKey"] = someValue;

说:

this.Page.ViewState["someKey"] = someValue;

但请注意 - 如果您在页面上有多个控件实例,则必须确保它们使用不同的键!

答案 2 :(得分:0)

显然,Asp.Net 4.0

可以实现这一点