2012-06-14 241 views
1

根据候选人的回答,我对ASP.Net应用程序中ViewState的功能存在困惑。根据候选人如果您有一个具有某个值的控件并且您更改了该值,则在回发时它会将初始值以及更改后的值发送到服务器。因此,如果您继续更改值并提交,则整个树会发送到服务器。我试图在网上搜索,但无法得到任何关于相同的事实。Viewstate是否保留历史

如果上面的描述是混乱的,这里是给对权利要求书更清晰的例子:
- 我们有<asp:TextBox ID="txt1" runat="Server" Text="First Value"/>
- 页面加载后,我在txt1进入“二值”,然后点击提交与同一页再次加载(因为我没有在点击事件中写入逻辑)
- 现在我在txt1中输入“Third Value”并再次点击提交。

据我第一次打提交的候选人,无论是“第一个值” &“二值”被发送到服务器,并在之后的页面加载,它加密这两个值,并把它在ViewState所以当我第二次点击提交时,视图状态中的加密值(同时具有“第一值”&“第二值”)和“第三值”一起被提交。

我不是来自工程背景,应聘者并声称这是他在大学教给他的。我只想知道这些说法中是否有任何真相。任何帮助表示赞赏。

回答

4

不,这是不正确的。

在第二次提交时,“Second Value”将作为ViewState隐藏字段的一部分发送,“Third Value”作为TextBox的值发送。

但是,所有这三个值都将在页面生命周期的不同时间在服务器上可见(这可能是导致混淆的原因)。

  • 在页面生命周期的初始阶段,将设置“First Value”(来自页面标记)。

  • 在LoadViewState阶段,这将通过“第二值”(从视图状态)

  • 在LoadPostbackData阶段,这将通过“第三值”来替换被替换。

在下一回传(说“第四个值”),你就可以看到“第一个值”页面生命周期过程中,“第三种价值”和“第四个值”在不同的时间,但“第二价值“将会消失。

+0

谢谢乔..这是我的假设,但想知道别人。我会等待更多的回应以获得一些见解。 – Wiz

+1

@Wiz,下面的文章是一个很好的起点:http://msdn.microsoft.com/en-us/library/ms972976.aspx – Joe