ViewStateMode与EnableViewState

有什么区别:

  • ViewStateMode:已禁用/已启用/inheritance
  • EnableViewState:True / False

这是在asp.net控件的属性。

感谢您的解释。

编辑

ViewStateMode

  • 已启用 – 为此控件打开ViewState
  • 已禁用 – 将此控件的ViewStateclosures
  • inheritance – inheritance父控件的值

的EnableViewState

  • 重写ViewStateMode,对于ViewStateMode必须是true才有意义。

请参阅: 最小化视图状态 – 在asp.net 4.0中由“EnableViewState”和“ViewStateMode”混淆

原版的

了解ASP.NET视图状态

获取或设置一个值,该值指示服务器控件是否将它的视图状态以及它包含的任何子控件的视图状态保留给发出请求的客户端。 Control.EnableViewState属性

即使对页面禁用视图状态,也可以使用ViewStateMode属性为单个控件启用视图状态。 有关视图状态和控制状态的更多信息,请参阅EnableViewState属性。 Control.ViewStateMode属性

这个组合允许你closures一个页面的ViewState作为一个整体,但启用它包含一个特定的控制。

要为页面禁用视图状态并为页面上的特定控件启用视图状态,请将页面的EnableViewState属性和控件设置为true,将页面的ViewStateMode属性设置为Disabled,并设置控件的ViewStateMode属性启用。

一个页面的ViewStateMode属性的默认值是Enabled。 页面中Web服务器控件的ViewStateMode属性的默认值为Inherit。 因此,如果不在页面或控件级别设置此属性,则EnableViewState属性的值将确定视图状态行为。

从Control.ViewStateMode属性

直到ASP.NET 3.5版本,页面级别视图状态控制属性(EnableViewState)视为最高优先级,意味着控制级别属性是True还是False它不会改变它看到页面级别属性的行为。 但在ASP.NET 4版本中,使用具有值的新属性ViewStateMode

1.Disabled – 将禁用该页面或控件的视图状态(即,如果页面级别属性被禁用,并且控制级别属性被启用,则视图状态将为先前正在使用EnableViewState的控制工作)。

2.启用 – 将启用该页面或控件的视图状态(即,如果页面级别的属性是启用和控制级别属性被禁用,现在视图状态将不起作用的控制)。

3.Inherit – 将inheritance页面控制属性的属性。

ViewStateMode用于更改将页面或控件的EnableViewState设置为true的结果行为。

引用Control.ViewStateMode属性

仅当EnableViewState属性设置为true时,页面或控件的ViewStateMode属性才有效。 如果EnableViewState属性设置为false,即使ViewStateMode属性设置为Enabled,视图状态也将被closures。

一个页面的ViewStateMode属性的默认值是Enabled。 页面中Web服务器控件的ViewStateMode属性的默认值为Inherit。 因此,如果不在页面或控件级别设置此属性,则EnableViewState属性的值将确定视图状态行为。

即使对页面禁用视图状态,也可以使用ViewStateMode属性为单个控件启用视图状态。 有关视图状态和控制状态的更多信息,请参阅EnableViewState属性。

要禁用页面的视图状态并为页面上的特定控件启用它,请将页面的EnableViewState属性和控件设置为true,将页面的ViewStateMode属性设置为Disabled,并设置控件的ViewStateMode属性启用。

这里是一个非常有用的文章,一个简单的详细示例ASP.Net视图状态:EnableViewState vs ViewStateMode 。 其要点是:

ViewStateMode属性允许您在父级别禁用视图状态并在子级别有select地启用它。

EnableViewState属性不允许这样做。

这两个属性都允许您在父级启用视图状态,并在子级别禁用它。