每当我们提交表单时,所有字段值都会发布到服务器并在Request对象中可用。理想情况下,可以使用相同的对象来读取值并使用它执行任何操作。
那么,为什么我们需要ViewState来保存字段的值?
请原谅我的无知,我想我错过了一些非常明显的事情,但是无法弄清楚是什么。
答案 0 :(得分:5)
在ASP.Net中引入ViewState的最明显原因是为了允许类似winform的编程模型(基于事件)。
当您有服务器端控件(例如文本框)时,发送回浏览器的html页面包含:
当表单提交回服务器时,ASP.Net底层引擎会将控件新值与存储在ViewState中的初始值进行比较。如果它不相同,将触发OnChange事件,您可以像在winform应用程序中那样附加到它。
答案 1 :(得分:2)
根据V4Vendetta,您可以在控件上禁用ViewState,但是您需要手动开发“ASP经典样式”,例如如果您需要将用户保留在页面上并且表单验证失败,则需要将初始值设置回用户上次设置的值,否则用户数据将丢失。
通过在ViewState中保留此信息,ASP Net控件可以更优雅地处理此问题。但是,如果您永远不需要再次渲染控件,或者您每次都不需要渲染控件数据而不需要其先前的状态(例如分页网格),那么为控件禁用ViewState将为您节省带宽。
ViewState here的一个很好的解释。
答案 2 :(得分:1)
Viewstate是一种ASP.NET状态管理技术,用于维护往返服务器之间的当前页面状态。 如果您不想要此功能,可以禁用它,它完全基于您实现页面的方式。
<%@ Page EnableViewState=”false”%>