我怀疑为什么我们使用ViewState,因为Session可以在整个应用程序中保持其状态。那么为什么需要ViewState才能将状态保持在一个页面?
答案 0 :(得分:3)
首先要知道的是什么
查看状态
是webforms
中特定页面的信息。它存储在隐藏字段中。它用于维护页面最后一次记住他在上面做了什么。
<强>会话强> 是与特定会话相关的信息.i.e。某些浏览器
现在回答你的问题
何时使用而不使用是一个群集F ......
由于引入了MVC,因此所有具有特定优点和缺点的ViewSate
都是我猜的。
可以使用viewstate
来存储值,以便在每次页面都有回发时记住,当页面处于回发后阶段时,它会删除用户控件的所有值。像asp.net中的Label
和TextBox
。因此,要将EnableViewState
属性的值保持为true
另一方面,当您希望从一个页面移动到另一个页面时,会使用会话,以保留所有页面的某些特定值。例如:在会话中保留UserId
,以便他可以访问需要某种authorization
或authentication
的所有页面
<强>更新强>
当我输入时你已经改变了你的问题:
在这种情况下
会话是针对特定时间的,而Viewstate
不是Viewstate
是临时存储机制。使用Controls
的{{1}}将其viewstate
作为隐藏输入呈现在html页面中。
希望这会以任何方式帮助你,并且不用担心投票,你会对它有所帮助
答案 1 :(得分:2)
如果用户在浏览器的不同选项卡中打开了应用程序的多个实例,则会话中的数据将由所有这些实例共享(除非something special完成以避免这种情况)。修改Session变量中的值的一个实例将覆盖其他实例保存的同一变量,从而导致数据混淆。使用ViewState可确保每个实例不受其他实例的影响。