在我阅读ViewState的一篇文章中,我看到一句话说我不应该误认为TextBox的值存储在ViewState中;它存储在PostBack数据中。
从这里我理解的是,当我回发一个Web表单时,输入控件值存储在HTTP Request主体中。不在Viewstate中。但据我所知,无论如何,ViewState值都存储在一个名为__VIEWSTATE的隐藏字段中。
那是否意味着__VIEVSTATE值未作为回发数据发布在HTTP POST Request正文中?对我来说听起来很无聊。
换句话说,基本上如果我说这样的scenerio的ViewState机制就像这样,我看到它是正确的还是跳过某些东西:
您在空文本框中输入值并提交页面
文本框的值将在POST HTTP Request正文中回发。此时__VIEWSTATE中没有任何内容来自TextBox
在服务器端,使用页面的OnInit方法的默认值创建TextBox
ViewState的TrackChange属性设置为true。
加载TextBox的回发数据。因为它与TextBox的defalut值不同(因为用户输入了某些内容),所以此文本框的ViewState被标记为DIRTY。
文本框的新值写入__VIEWSTATE隐藏字段
从现在起__VIEWSTATE hiddenfeild包含TextBox的最后一个给定值
该页面将发送到具有__VIEWSTATE隐藏字段的用户浏览器。但这次包含用户输入的最后一个值,该值将准备好呈现
谢谢你们!
burak ozdogan
答案 0 :(得分:0)
ViewState是页面上的隐藏输入,允许服务器跨同一页面的多个请求维护状态。 ViewState由服务器维护,因此除非服务器更改它,否则它将保持不变。 ViewState只是服务器与自己交谈的一种方式。
在您的示例中,您想知道为什么第一次在TextBox中放置值时,ViewState中似乎没有任何内容。原因是服务器还没有放任何东西。当TextBox的值第一次到达服务器时,服务器会将值放在ViewState中,以便它可以在所有后续请求中跟踪它。
在后续请求中,TextBox值将被编码到ViewState中,并作为POST数据发送回服务器。