Jam*_*rgy 17 asp.net viewstate
我正在尝试清理一个在任何地方都启用了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设置,但它似乎不起作用.
Dan*_*ett 14
根据关于ViewStateMode的MSDN文章,ViewStateMode只有具有含义的时候EnableViewState="true".为了达到你想要什么,你必须离开ViewStateMode="Enabled"的控制,然后包裹主要原因之一在的子控件asp:Placeholder有ViewStateMode="Disabled".这样,您仍然可以在代码隐藏中操作ViewState,但是没有子控件将具有ViewState(除了您明确设置为通过它的那个ViewStateMode="Enabled").
| 归档时间: |
|
| 查看次数: |
11797 次 |
| 最近记录: |