如何关闭视图状态良好?
-
22-07-2019 - |
题
从PHP背景我喜欢使用干净的URL从一个服务数据抓取到另一个编辑。
然而,在一些我的ASP.NET项目,我得到可怕的ViewState参数我的网址。
有一种方法用来全局关闭这个功能?
什么影响将这种对我的ASP.NET应用程序?
解决方案
您可以关闭视图状态对于整个网站是这样的:
<system.web>
<pages enableViewState="false" />
这是说,你不应该得到它的URL。视图状态是发送到服务器回传(其通常使用交)的隐藏字段。它使控件的状态下,当网页被呈现给客户,与每次回发发送。如果一切正常的应用程序,你可以切换到使用POST(问题的形式肯定使用get),如果不看看Jon的回答。
检查的视图状态如何融入asp.net生命周期此链接了解更多信息:的 http://msdn.microsoft.com/en-us/library/ms972976.aspx 。
其他提示
通过在web.config使用<page>
元件关闭默认视图状态。在EnableViewState="true"
指令使用@Page
一旦你禁用在web.config中的ViewState将不再工作。如果以后决定,你需要一个特定页面的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启用页面使用任何母版页一样的。
此添加到web.config文件:
<Pages enableViewState="false"/>
您可以切换到ASP.Net MVC。从我的理解它不使用ViewState的。
做召回,然而,大多数的ASP.NET Web预计某些行为形成开发商不会没有ViewState的工作。视图状态的目的是提供各种页面和控制特性从一个请求到下一个持续的错觉。 ViewState中并不包含所有的控制性能,只是那些已经改变。这个想法是,因为它们是在时间最后呈现的形式的ViewState保留这些性能。
一个很好的例子是在一个下拉一个SelectedIndexChanged
事件(一个不具有自动回发设置)。这工作,因为ViewState中保留了以前的索引,和形式职位目前的索引和控制,才能比较两个知道所选择的指标发生了变化。这时候,它引发了SelectedIndexChanged
事件。如果没有ViewState中,该事件将不会触发。同样对于TextChanged
事件等。
如果不考虑GET的情况(这是我从来没有遇到),与ViewState的大问题是使用它的地方是没有必要的。您的网格控件不需要保留其所有行的所有控件的以前的值,所以不要上启用ViewState中。