我正在尝试清理一个在任何地方都启用了ViewState的旧的ASP.NET WebForms站点.这是一个性能问题 - 巨大的观点导致明显的提交延迟.但是除了一些复杂的控件和表单数据之外,大多数表单似乎都不需要ViewState.即使是没有输入控件的表单,也会生成大型视图状态,因为我猜asp.net存储了关于每个服务器控件的各种元数据.但是可见性状态等都是在代码中控制的,所以我认为我可以消除很多.
添加EnableViewState="false"到不需要它的每个控件(在页面中并在代码中创建)是非常繁重的,所以我试图在页面/控件级别禁用它,并选择性地为需要它的东西启用它.(是的,我意识到这是有风险的,但实际上只有几个大的形式和几个模板,如果解决会产生很大的不同).
这是我没有得到的.
如果控件或页面具有EnableViewState="false"其<%.. %>描述符,或者在其父页面中创建它的标记中,则一切都会中断,因为在代码中添加的任何ViewState数据都不起作用.所以我似乎能够在控件级别启用它,但是EnableViewState对于每个容器中的包装器控件设置为false,然后ViewStateMode=true在每个控件级别设置(以此为止).
我没有得到的是以下情况:
ViewStateMode = ViewStateMode.Enabled以及
EnableViewState = false包含其他控件的控件.
控制.内部控件是否仍可启用ViewStateMode?基本上,哪个设置在冲突时有最终结论?
对于每个容器,我希望能够在包装器控件中禁用所有内容,但仍然确保:
1)代码工作中的ViewState设置,和
2)默认情况下,对所有控件禁用ViewState,和
3)我可以选择性地启用ViewState以进行子控制.
这似乎令人困惑.如果我在母版页中设置了一个包装器控件EnableViewState="false",但随后设置了一个子控件ViewStateMode="Enabled",它就会中断.根据MS,ViewStateMode应该取代任何外部ViewState设置,但它似乎不起作用.
我需要在我的Web应用程序中完全禁用viewstate for aspx页面.我经历过不同的博客,我理解的是我们必须设置<%@ Page EnableViewState="false" ...%>.但这不起作用.我的问题是,这是否足以禁用页面内所有控件的viewstate?或者我应该进行任何其他修改吗?请具体说明.我不想在aspx页面内启用viestate甚至单个控件