`
jelly
  • 浏览: 299240 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

让人困惑的VIEWSTATE

阅读更多

ViewState 在控件开发中经常会用到。

 

ViewState 的作用:

1. 类似HashTable,通过Key值为每个控件存储各种信息。

2. 初始化值之后, 跟踪ViewState 值的变化。

3. 提供序列化,发序列化功能,将ViewState 的值放置到客户端form的隐藏域。

4. 在PostBack时,自动恢复ViewState 值。

 

ViewState不能做的事情:

1. 自动保留类变量的状态。

2. 记住每次页面载入的状态信息。

 

 ViewState是定义在 System.Web.UI.Control 类的一个保护属性(protected ),所有的服务器端控件, 用户控件, 和page都是从这个类派生下来的。 而这个属性的实际类型是System.Web.UI.StateBag

服务器端控件利用ViewState作为即使不是全部,也是大部分的属性的后端存储器。

 

通常我们存储属性值的方式如下:

public string Text { 
   get { return _text; }
    set { _text = value; }
}

 

 

但在asp.net的控件中,通常都不是这样的。对应的代码应该是下面的样子:

public string Text {
    get { return (string)ViewState["Text"]; }
    set { ViewState["Text"] = value; }
}

 

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics