ViewState在作用?

applehuang2000 2003-10-19 11:48:25
大家来说几句,ViewState在作用是什么,如何应用?
...全文
343 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
brightstar 2003-12-10
  • 打赏
  • 举报
回复
mark
applehuang2000 2003-10-21
  • 打赏
  • 举报
回复
up
applehuang2000 2003-10-20
  • 打赏
  • 举报
回复
为什么要记录控件的状态啊?
guoyan19811021 2003-10-19
  • 打赏
  • 举报
回复
孟子兄说的太好了!
学习!!
孟子E章 2003-10-19
  • 打赏
  • 举报
回复
ViewState对象

在页面回传间通信,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 才是持续的。
gucs 2003-10-19
  • 打赏
  • 举报
回复
学习
postform999 2003-10-19
  • 打赏
  • 举报
回复
mark
guoyan19811021 2003-10-19
  • 打赏
  • 举报
回复
用ViewState就行了
applehuang2000 2003-10-19
  • 打赏
  • 举报
回复
我现在还不明白它是如何保存控件的状态的啊...



whl9234 2003-10-19
  • 打赏
  • 举报
回复
1.是cookies,你可以把C:\Documents and Settings\whk\Cookies中的文本文件删除,再登陆网易,看看还有你说的情况吗?
2.建议在不需要使用ViewState时,用html控件,不用asp.net控件,因为ASP.NET控件大多有viewstate,而viewstate是很消耗系统资源的,我想这也许是net_lover(孟子E章)说的为什么不需要维持控件的值就要把 ViewState 禁止的原因吧。
loulanlouzhu 2003-10-19
  • 打赏
  • 举报
回复
应该是cookies吧
applehuang2000 2003-10-19
  • 打赏
  • 举报
回复
好像在网易登陆时,你输入一个字母后,就显示你上一次输入相同字母开头的用户名.
这是不是ViewState的应用啊?

62,041

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧