ViewState
通过Web表单中维持对象的ViewState(视图状态),省去大量的编码工作
ViewState是ASP.NET中用来保存web控件回传时状态值的一种机制
在Web窗体(Form)中设置为runat="Server",就会被附加一个隐藏属性 _VIEWSTATE,用于存放所有控件的状态值
可以记录一个页面的不同PostBack的一些数值
在 class ASP中的表单被提交时,所有表单数据都会被清空,站点不会维持 ViewState
而 ASP .NET中的表单被提交时,表单会随着所有表单值一同重新出现,.NET维持了 ViewState
ViewState 会在页面被提交到服务器时 指示器状态,
通过在每张页面中的<form runat="server">控件中放置隐藏域,就可以定义其页面状态了
源代码类似如下:
维持 ViewState 是ASP.NET Web表单的默认设置
如果不希望维持 ViewState,
在 .aspx页面顶部添加
<%@Page EnableViewState = "false" %>
或在控件添加属性
EnableViewState = "false"
机制:
当请求某个页面时,ASP.NET把所有控件的状态序列化成一个字符串,然后作为窗体的隐藏属性送到客户端
当客户端页面回传时,ASP.NET分析回传的窗体属性,并赋值给控件对应的值
整个过程由 ASP.NET负责
注意:ViewState 大小写敏感
ViewState不能跨页面
TextBox的TextMode="Password"时,将不被保存在ViewState
在页面没回传或重定向时,不要使用ViewState
Session和ViewState的比较
Session ViewState
占服务器资源 true false
time out true/20分钟 false/永不过期
存储类型 任何.net类型 只支持 string,int,array,arraylist等
加重html负担 false true
Session 对整个application有效,而 viewstate相当于某个页面的 session
定义 viewstate
ViewState["name"]="value";
string name = (string)ViewState["name"];