Asp.net 在父控件中禁用时,如何为子自定义控件启用ViewState?
我试图创建一个自定义控件,该控件类似于“gridview”,但具体用于实现某些自定义接口的业务对象 在这样做的过程中,我遇到了以下问题Asp.net 在父控件中禁用时,如何为子自定义控件启用ViewState?,asp.net,viewstate,custom-server-controls,Asp.net,Viewstate,Custom Server Controls,我试图创建一个自定义控件,该控件类似于“gridview”,但具体用于实现某些自定义接口的业务对象 在这样做的过程中,我遇到了以下问题 我有一个禁用了viewstate的控件(我不想重新启用它),它还有一个子控件,我想启用viewstate。我似乎无法使子控件上的viewstate正常工作,因为其父控件已禁用。有人知道如何使其工作吗?您不能在另一个禁用了viewstate的控件中的控件上启用viewstate 您唯一的选择是为外部控件启用它,然后为其中的所有控件(需要viewstate的控件除外
我有一个禁用了viewstate的控件(我不想重新启用它),它还有一个子控件,我想启用viewstate。我似乎无法使子控件上的viewstate正常工作,因为其父控件已禁用。有人知道如何使其工作吗?您不能在另一个禁用了viewstate的控件中的控件上启用viewstate 您唯一的选择是为外部控件启用它,然后为其中的所有控件(需要viewstate的控件除外)禁用它 任何容器上的EnableViewState属性都将覆盖该容器中所有控件的行为 祝你好运 编辑:
您可能希望查看您的createChildControls()方法,并使用EnableViewState属性为自定义控件中的每个控件枚举禁用viewstate的控件。如果您愿意手动将数据放入viewstate中(而不是让ASP.NET为您保留控件的状态),您可以将项目直接放入页面的ViewState,而不是控件的ViewState 也就是说,不要说:
this.ViewState["someKey"] = someValue;
说:
但是要小心-如果页面上有多个控件实例,则必须确保它们使用不同的键!显然,这是可能的,因为Jason是正确的,一旦它在您上方被禁用,您就无法再向下启用它。
this.Page.ViewState["someKey"] = someValue;