Viewstate是否保留历史记录

时间:2012-06-14 08:56:26

标签: asp.net viewstate

根据候选人的回答,我对ASP.Net应用程序中ViewState的功能感到困惑。根据候选者如果您有一个具有某个值的控件并且您更改了该值,则在回发时它会将初始值以及更改的值发送到服务器。因此,如果您继续更改值并提交,则将整个树发送到服务器。我尝试在线搜索,但无法获得有关相同的事实。

如果以上描述令人困惑,这里有一个例子可以更清楚地说明权利要求:
- 我们有<asp:TextBox ID="txt1" runat="Server" Text="First Value"/>
- 页面加载后,我在txt1中输入“Second Value”并再次点击提交和相同页面加载(因为我在点击事件中没有写入逻辑)
- 现在我在txt1中输入“第三价值”并再次点击提交。

据我第一次点击提交的候选人,“First Value”和&amp; “Second Value”被发送到服务器,当页面加载之后,它会加密这两个值并将其放入ViewState中,这样当我第二次点击提交时,viewstate中的加密值(同时具有“First Value”) &amp;“Second Value”)与“Third Value”一起提交。

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

1 个答案:

答案 0 :(得分:4)

不,那不是真的。

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

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

  • 在页面生命周期的初始阶段,将设置“第一个值”(从页面标记开始)。

  • 在LoadViewState阶段,这将被“Second Value”(来自ViewState)取代

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

在下一个Postback(比如“第四个值”)中,您将能够在页面生命周期的不同时间看到“First Value”,“Third Value”和“Fourth Value”,但“Second Value”将永远消失。

相关问题