我们知道视图状态容易被滥用,但asp.net webform严重依赖于此功能。
我想知道您是否默认禁用了viewstate,并且只在需要时添加它。或者你采用visual studio default,默认情况下实际启用了viewstate。
答案 0 :(得分:3)
我倾向于在执行web.forms时默认使用它。
但是在编写我自己的用户控件时,我会禁用它,直到我需要它,或者我发现某些东西不起作用。我还监视视图状态的大小以及何时/如果它变得太大我查看页面正在做什么并改变我在页面上正在做的事情。即绑定到仅包含所需数据的数据对象,不再包含......类似的东西。
答案 1 :(得分:2)
正如其他人所说,除非我们讨论一个相当静态的页面,否则我倾向于在开发时保持ViewState,并在页面工作时开始有选择地禁用它。这样,前期担心的事情就少了一点。
您可能会发现这很有趣,在ASP.NET 4.0中,我们可以更有效地控制禁用ViewState:http://www.asp.net/learn/whitepapers/aspnet40/#_Toc223325478
答案 2 :(得分:1)
Personnaly,没有。最终,让它被禁用将是你想要的行为,但大多数时候,没有。此外,我会做一个手动ViewState优化传递和禁用控件的ViewState,如果真的有必要,它将不需要它。当你处于重度开发时,最好不要让ViewState担心。我不是在这里说你根本不应该关心ViewState,而是将EnableViewState放在一边,直到你觉得需要减轻到服务器的行程。
答案 3 :(得分:1)
默认情况下,使用web.config中的<page>
元素关闭ViewState。一旦在web.config中禁用ViewState,在EnableViewState="true"
指令中使用@Page
将不再有效。如果您稍后决定需要特定页面的ViewState,则可以使用<location>
元素将其重新打开。
<configuration>
<system.web>
<pages enableViewState="false" />
</system.web>
<location path="MyFolder/MyPage.aspx">
<system.web>
<pages enableViewState="true" />
</system.web>
</location>
<location path="Site.master">
<system.web>
<pages enableViewState="true" />
</system.web>
</location>
</configuration>
您需要对启用ViewState的页面使用的任何母版页执行相同的操作。
答案 4 :(得分:0)
我更进一步,我创建了一个继承自Page类并覆盖2个函数的类
protected override void SavePageStateToPersistenceMedium(object viewState)
{
}
protected override object LoadPageStateFromPersistenceMedium()
{
return null;
}
然后让我的页面要求禁用viewstate继承此。 效果很好。