请教点关于生命周期的问题。有点犯晕了。麻烦大虾解释下。谢谢了。

zl58859173 2008-12-08 04:47:27
我一个页面有5个textbox和一个按钮。
我现在想当我单击这个按钮的时候把输入在这5个textbox里面的值保存住。
当时我第一时间想的就是viewstate,但是后来我发现就算我什么代码都不写。
同样能保存住。不知道为什么呢。我想到可能是保存视图状态的原因。
于是我把页面的enableviewstate设置成了false,但是还是一直能保存。
有点犯晕了。知道生命周期很重要,但是这个时候有点迷糊了。
麻烦大虾能用通俗的话帮我解释一下。谢谢了。
...全文
200 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
flashlove2008 2008-12-09
  • 打赏
  • 举报
回复
简单的保存到数据库不用考虑viewstate

chagel 2008-12-09
  • 打赏
  • 举报
回复
星星讲的太多,不容易理解。我来说一下:
楼主的问题,其实并不是viewstate的问题。而是asp.net有关postback机制的一个现象,简而言之,asp.net本身把这些值记住了。
asp.net在页面回发(postback)之后需要获得从客户端传来的必要数据,这个过程发生在OnInit和OnLoad事件之间,具体是在Page类的ProcessPostData方法里面。在这个方法中,asp.net会调用服务器控件从IPostBackDataHandler实现的LoadPostData方法,重新把客户的输入值赋值给该控件的相关属性(比如TextBox的Text属性)。
koukoujiayi 2008-12-09
  • 打赏
  • 举报
回复
记号
  • 打赏
  • 举报
回复
当你将EnableViewState设置为false,TextBox已经不知道“上一次输出html时的默认值”了,因此在装载PostData时如果客户端看到的value值不是空串,即使客户端根本没有修改,它也总是触发TextBox的TextChanged事件。
  • 打赏
  • 举报
回复
2楼的文章内容我没有细看,不过格式、图文还是挺清爽的,文字、表格和图形比例适当,应该是片不错的文章。

单就楼主的问题而言,实际上那个Text属性此时恰好可以不需要ViewState。当客户端向服务器提交数据,不但提交ViewState,也提交所有控件的值。在服务器端,首先是恢复了ViewState状态,紧接着设置了由客户端传来的值。假设你将TextBox的Visible属性设置为false,也就是TextBox根本不会输出html到浏览器端,那么可以说TextBox就靠ViewState来维系它的状态了。而当Visible是true,那么TextBox被转换为html输出到浏览器端(例如<input type=text value='1234' />),客户端提交时服务器端实际上会读取这个value并设置到Text属性上。一个控件可能有几十个甚至上百个属性需要ViewState来保存,但是只有一个是用客户端的value来设置的。TextBox的Text恰好是这样既有ViewState又有value,而ViewState和客户端提交值是两个不同的机制,需要分别了解。

我简单地“扫”了一眼2楼的文章,似乎没有讲解装载ViewState和装载PostData的区别。实际上,了解机制 IPostbackDataHandler 才能了解关于 TextChanged 之类的事件的触发机制。
shizheyangde 2008-12-08
  • 打赏
  • 举报
回复
http://blog.csdn.net/shadow_gz/archive/2007/11/30/1909687.aspx
zl58859173 2008-12-08
  • 打赏
  • 举报
回复
没人嘛??自己顶回去。

62,039

社区成员

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

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

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

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