注意,这个应用程序依赖于目前ViewState使用的编码字符,在最终版本发布前可能会改变。
但在某些情况下,视图状态仅仅是由其他原因引起的问题的无辜替罪羊。
这些控件展示了ViewState在绑定到声明性数据源时表现的智能使用。
对于您的那些生成控件,控件状态的使用模型不像ViewState一样方便。
现在,如果您禁用了该日历的视图状态,可节省大约1KB的数据,而这仅仅是总大小的10%。
页隐藏字段VIEWSTATE和EVENTTARGET的存在是用于帮助确定是否已发生回发事件的。
视图状态以及任何其他隐藏字段随请求一起执行并上载到服务器。
下面的示例演示如何实现从其控件的ViewState属性存储和检索值的Text属性。
但是,需要提出警告的是,具有大量视图状态的页面不会从部分呈现中获益很多。
很明显,如果您关心响应大小,那么决定何时禁用控件的ViewState是重要的。
返回途中,会一同下载更新的视图状态与新的隐藏字段及可能更短的标记(如果有)。
默认情况下是允许使用ViewState的,如果你不想使用ViewState的话,你可以在控件或页面级别把关闭它。
在这个事件结束的时候,viewstate将会保存页面上所有控件的信息。
使用ViewState,开发人员能够专注于编程模型和用户界面,而不用担心状态保持。
您为ViewState属性指定键和值,Page对象将对请求之间的状态信息进行序列化。
作为一个活动的ViewState示例,尝试运行图1显示的页面。
因此,不是填充控件、设置viewstate、应用主题等一切都发生在页面加载上。
使控件跟踪其视图状态的更改,以便可以将这些更改存储在对象的ViewState属性中。
通过Control.ViewState属性可访问此对象。
他继续详细讨论了ViewState,事件管理和PostBack机制的问题。
在这部分中我们没有获得viewstate、postedvalues及已经初始化的控件。
ViewState属性模仿Control类的ViewState属性。
在该事件发生前,已针对页和所有控件保存了ViewState。
当页面被发送时,在服务器上这些HTML标记被创建到ASP.NET控件且viewstate和表单数据捆绑在一起。
同样地,DataGrid类使用ViewState发布分页、编辑和排序事件。
它还调用与ViewState属性相对应的私有viewState或viewStateValue字段的TrackViewState方法。
查看图6之后,您会发现响应由两大块组成:标记和视图状态。
这个事件,我们可以访问所有控件、viewstate、发送的值。