黑马程序员技术交流社区

标题: 视图状态View state [打印本页]

作者: 严鹏    时间: 2012-2-18 22:35
标题: 视图状态View state
ASP.Net中的View State在页面数据传递的过程中起什么作用,会有什么利弊?如果在页面禁用ViewState会不会有什么影响?
作者: 莫洪刚    时间: 2012-2-19 10:18
viewstate顾名思义是页面视图的意思,用来储存页面上的信息,表单里内容保存在这个里面,它只在当前页起作用
在ASP.Net中的View State不能说没用,要看在什么情况下用了,一般如果只展示数据那么没有必要用。
禁用ViewState(enableviewstate=false),ViewState,多多少少它还是会存在一点点的,只不过他变得非常少了,如果要全部都不想要,那么就直接删除服务端控件。
注意如果页面中有相关的服务端控件,那么禁用ViewState,某些控件将会失效。比如Repeater中的ItemCommand。
禁用ViewState还是看具体的应用场景,如果使用不当,会照成整个页面加载速度明显下降。

作者: 严海彬    时间: 2012-2-20 10:19
最简单的说明就是你在页面上的文本框输入一个值之后点了一个按钮,按钮会吧文本框的值输出出来,但是点了按钮之后,页面是刷新了一遍的,我们知道,web是没有状态的,所以就要靠View State来存储相关的信息,刷新之后才能把文本框的值重新显示出来,如果禁用了那么这些值就不能保存了
作者: 什麽才是王道    时间: 2012-2-20 11:01
ASP.NET中的ViewState
ViewState是ASP.NET中用来保存WEB控件回传时状态值一种机制。在WEB窗体(FORM)的设置为runat="server",这个窗体(FORM)会被附加一个隐藏的属性_VIEWSTATE。_VIEWSTATE中存放了所有控件在ViewState中的状态值。

ViewState是类Control中的一个域,其他所有控件通过继承Control来获得了ViewState功能。它的类型是system.Web.UI.StateBag,一个名称/值的对象集合。

当请求某个页面时,ASP.NET把所有控件的状态序列化成一个字符串,然后做为窗体的隐藏属性送到客户端。当客户端把页面回传时,ASP.NET分析回传的窗体属性,并赋给控件对应的值。当然这些全部是由ASP.NET负责的.





欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2