您何时可以选择在会话中使用ViewState?

时间:2016-05-28 05:28:03

标签: c# asp.net

我怀疑为什么我们使用ViewState,因为Session可以在整个应用程序中保持其状态。那么为什么需要ViewState才能将状态保持在一个页面?

2 个答案:

答案 0 :(得分:3)

首先要知道的是什么

查看状态webforms中特定页面的信息。它存储在隐藏字段中。它用于维护页面最后一次记住他在上面做了什么。

<强>会话 是与特定会话相关的信息.i.e。某些浏览器

现在回答你的问题

何时使用而不使用是一个群集F ......

由于引入了MVC,因此所有具有特定优点和缺点的ViewSate都是我猜的。 可以使用viewstate来存储值,以便在每次页面都有回发时记住,当页面处于回发后阶段时,它会删除用户控件的所有值。像asp.net中的LabelTextBox。因此,要将EnableViewState属性的值保持为true 另一方面,当您希望从一个页面移动到另一个页面时,会使用会话,以保留所有页面的某些特定值。例如:在会话中保留UserId,以便他可以访问需要某种authorizationauthentication

的所有页面

<强>更新

当我输入时你已经改变了你的问题: 在这种情况下 会话是针对特定时间的,而Viewstate不是Viewstate是临时存储机制。使用Controls的{​​{1}}将其viewstate作为隐藏输入呈现在html页面中。

希望这会以任何方式帮助你,并且不用担心投票,你会对它有所帮助

答案 1 :(得分:2)

如果用户在浏览器的不同选项卡中打开了应用程序的多个实例,则会话中的数据将由所有这些实例共享(除非something special完成以避免这种情况)。修改Session变量中的值的一个实例将覆盖其他实例保存的同一变量,从而导致数据混淆。使用ViewState可确保每个实例不受其他实例的影响。