当我为页面禁用ViewState时.它不允许任何其他控件使用ViewState ..即使我为该特定控件设置EnableViewState ="true"..
是否可以在为页面本身禁用ViewState时为控件启用ViewState?
如果不是如何禁用viewstate页面上的控件,除了少数没有明确指定EnableViewState ="false"..键入相同的这么多控件是忙乱..
如果关闭翻转页面的ViewState,则无法为特定组件启用ViewState.这是因为ViewState是递归序列化的,因此当Page不允许ViewState时,它不会为任何子控件序列化ViewState.
在回答你的问题时,如果你不想在单个控件上显式关闭ViewState,但想要保持一些控件ViewState,最好的方法是编写一个小实用程序方法,为所有控件关闭ViewState(使用递归)或其他).然后为要为其启用ViewState的控件启用ViewState.
或者,如果控件是其他容器控件(例如Panel)中的组,则可以采用中间地板且不太有力的方式.您可以通过禁用Panel的ViewState来禁用Panel内所有控件的ViewState.
如果关闭翻转页面的ViewState,则无法为特定组件启用ViewState.这是因为ViewState是递归序列化的,所以如果Page不允许ViewState,它将不会为其任何子控件序列化View.it的子控件.
随着ASP.NET 4的出现,我们有了一个名为ViewStateMode的新属性,即使对页面禁用了视图状态,也可以使用该属性为单个控件启用视图状态.
要使用这个新属性,您可以创建一个将ViewStateMode设置为Disabled的基页类,或者创建一个执行相同操作的PageAdapter.web.config中没有viewStateMode属性.
这是页面适配器的代码:
using System.Web.UI; using System.Web.UI.Adapters; namespace Playground.Web.UI.Adapters { public class PageAdapter: System.Web.UI.Adapters.PageAdapter { protected override void OnLoad(EventArgs e) { ViewStateMode = ViewStateMode.Disabled; base.OnLoad(e); } } }
这是浏览器文件的代码: