ASP.NET还在继续完善WebForm中的视图状态管理。例如,ASP.NET 4.0引入了控件视图状态属性ViewStateMode,该属性可以取值Disabled、Enabled或Inherit。那么,该属性与原来的视图状态属性EnableViewState有何区别呢?
- EnableViewState可以在UI控件(即asp:类型的控件)和服务器html元素(即html元素带runat="server"属性)中使用,ViewStateMode只能在UI控件中使用。
- 如果是单一控件中设置这两个视图状态属性的值,则Disabled或false表示关闭视图状态。
- 如果在父控件(例如Page)设置了EnableViewState="false",则该控件所有的子控件的视图状态将被关闭,不论使用EnableViewState还是ViewStateMode;如果设置父控件的EnableViewState="true"(或默认),那么子控件可以使用EnableViewState或ViewStateMode继承或关闭视图状态。
- 如果在父控件(例如Page)设置了ViewStateMode="Disabled",在该控件的子控件中不能使用EnableViewState="true"启用视图状态,但可以使用ViewStateMode="Enabled"启用;如果在父控件(例如Page)设置了ViewStateMode="true",则子控件可以使用EnableViewState或ViewStateMode关闭视图状态。