ViewState的工作原理
ViewState确实没有什么神秘之处,它是由ASP.NET页面框架管理的一个隐藏的窗体字段。当ASP.NET执行某个页面时,该页面上的ViewState值和所有控件将被收集并格式化成一个编码字符串,然后被分配给隐藏窗体字段的值属性(即<inputtype=hidden>)。由于隐藏窗体字段是发送到客户端的页面的一部分,所以ViewState值被临时存储在客户端的浏览器中。如果客户端选择将该页面回传给服务器,则ViewState字符串也将被回传。在上面的图2中可以看到ViewState窗体字段及其回传的值。
回传后,ASP.NET页面框架将解析ViewState字符串,并为该页面和各个控件填充ViewState属性。然后,控件再使用ViewState数据将自己重新恢复为以前的状态。
看了很多感觉比较深奥,对于我来说,现在最多的使用应该是如下吧:
想在页面上不通过标签label来记住页面中的某个值,就可以使用ViewState来做,可以这样写:
ViewState["id"]==DataTable.Rows[0]["sm_id"].ToString();
然后后面有地方用到这个值的话,就可以直接用ViewState["id"]来赋值就行了.