电脑爱好者,提供IT资讯信息及各类编程知识文章介绍,欢迎大家来本站学习电脑知识。 最近更新 | 联系我们 RSS订阅本站最新文章
电脑爱好者
站内搜索: 
当前位置:首页>> C#>>ViewState对象介绍及具体作用:

ViewState对象介绍及具体作用

来源:孟子E章 | 2007-6-7 | (有4064人读过)

 在页面回传间通信,ASP中一般利用窗体的属性和   session   来存放数据,在   ASP.NET   中也可以使用   ViewState   对象来做同样的处理。     
            
          
  在ViewState存放数据:    
     
  ViewState[key]=   value;    
  或    
     
  ViewState.Add(key,value);    
  取出数据:    
     
  TempStr   =ViewState[key];    
  key不存在时返回空。    
     
  不能通过ViewState对象来访问控件的值。    
     
  动态建立控件的ViewState:    
     
  当需要动态地建立一个服务器控件,如下建立了一个   RadioButton   控件并加入到窗体控件集合中:    
     
  RadioButton   rb   =   new   RadioButton();    
  Page.Controls[1].Controls.Add(pc);    
  上面的代码增加一个控件到控件集合末,同样也可以插入到已有控件中的任何位置。    
     
  RadioButton   rb   =   new   RadioButton();    
  Page.Controls[1].Controls.AddAt(1,pc);    
     
  通常,这些动态生成的控件的状态也需要生成到   ViewState   中去,但这个功能并没有完全实现,特别是生成的控件插入到已有的控件中时。    
     
     
  当动态生成控件和已有控件并存时   ViewState   的结果是不可预料的。在页面回传时,首先非动态生成的控件在ASPX页中被生成,并在   Page_Init   和   Page_Load   事件中读取   ViewState。当页面的控件读取   ViewState   的值时,那些动态生成的控件却还没有被生成,所以当动态生成的控件被    
  生成时,页面就会省略掉ViewState或者以剩下或许错误的   ViewState   来填充控件。    
     
  所以,当需要插一个动态生成的控件到已有控件中去时,最好把这个控件的   ViewState   通过EnableViewState禁止掉。    
     
  提醒:    
  1.   当存在页面回传时,不需要维持控件的值就要把   ViewState   禁止。    
  2.   ViewState的索引是大小写敏感的。    
  3.   ViewState不是跨页面的。    
  4.   为了能包存在   ViewState   中,对象必须是可流化或者定义了   TypeConverter。    
  5.   控件   TextBox   的   TextMode   属性设置为   Password时,它的状态将不会被保存在   ViewState   中,这应该是出于安全性的考虑。    
  6.   在页面没有回传 或 重定向 或 在回传中转到(transfer)其他页面时不要使用   ViewState。    
  7.   在动态建立控件时要小心它的   ViewState。    
  8.   当禁止一个程序的   ViewState   时,这个程序的所有页面的   ViewState   也被禁止了。    
  9.   只有当页面回传自身时ViewState   才是持续的。    
C#热门文章排行
网站赞助商
购买此位置

 

关于我们 | 网站地图 | 文档一览 | 友情链接| 联系我们

Copyright © 2003-2024 电脑爱好者 版权所有 备案号:鲁ICP备09059398号