加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

asp.net – Viewstate vs Postback

发布时间:2020-12-16 07:31:16 所属栏目:asp.Net 来源:网络整理
导读:我想回答我自己的问题,但我想确保我正确理解.我最初认为当用户在表单中提供值时,在回发时,值是作为Viewstate的一部分提交的,因为TextBox.Text是viewstate的一部分.现在我发现用户提供的值实际上不会在OnLoad事件之后应用于控件.这使我感到困惑,因为我认为vie
我想回答我自己的问题,但我想确保我正确理解.我最初认为当用户在表单中提供值时,在回发时,值是作为Viewstate的一部分提交的,因为TextBox.Text是viewstate的一部分.现在我发现用户提供的值实际上不会在OnLoad事件之后应用于控件.这使我感到困惑,因为我认为viewstate在OnLoad之前(或调用Controls.Add()时)被加载到控件中.我已经浏览了页面上的文档并控制了生命周期几次,我现在才意识到处理回发数据有不同的步骤(这一步没有出现在很多文档中:(

1)因此,在OnLoad事件之后应用用户在字段中输入的值的回发数据,并且在OnLoad事件之前应用Viewstate数据?

2)基本上所有这些意味着在回发时服务器获取TextBox.Text属性的两个值,Viewstate中的属性,就像前一个请求中的“旧”值,以及用户提供的新值.表格?

3).net框架是否应用与Viewstate相同的回发数据,因为它通过它的ID属性找到适当的控件?这很重要,因为我正在动态创建控件,我甚至可能有超时更改结构的表单,需要考虑如何处理ID.到目前为止,我还没有设置ID属性,一切正常,但事情可能会更复杂.

4)在客户端根本没有修改viewstate数据吗?或者视图状态与服务器在先前请求中发送的内容相同(假设没有篡改)?我的印象曾经是服务器将所有控件属性编码到视图状态中,而在客户端提交表单时,视图状态字段被解码,修改,编码并提交给服务器并进行修改.我假设有一堆javascript为我做这一切.现在我觉得我错了.相反,Viewstate似乎永远不会在客户端更改,并且所有客户端更改都在回发数据中,以便下一个请求服务器加载视图状态,加载回发,并在下一个响应中提供新的更新视图状态?

解决方法

1)两者都在Load之前加载
2)基本上,是的
3)首先应用ViewState,然后应用Post Data

引用Scott Mitchell(见下文)

dynamically added controls must be
programmatically added to the Web page
on each and every page visit. The best
time to add these controls is during
the initialization stage of the page
life cycle,which occurs before the
load view state stage. That is,we
want to have the control hierarchy
complete before the load view state
stage arrives. For this reason,it is
best to create an event handler for
the Page class’s Init event in your
code-behind class,and add your
dynamic controls there.

4)除非你在框外做某事,否则ViewState永远不会被修改为客户端. “ViewState”是一个HTML表单字段,在服务器端进行处理.

这里有一些来自Understanding ASP.NET View State by Scott Mitchell的图片可能会对你有所帮助.

alt text http://i.msdn.microsoft.com/ms972976.viewstate_fig02%28en-us,MSDN.10%29.gif
alt text http://i.msdn.microsoft.com/ms972976.viewstate_fig04%28en-us,MSDN.10%29.gif

奖金阅读材料:http://weblogs.asp.net/infinitiesloop/archive/2006/08/03/Truly-Understanding-Viewstate.aspx

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读