【发布时间】:2011-02-22 09:54:28
【问题描述】:
谁能解释一下 ViewState 和 Session 的区别?
更具体地说,我想知道在页面的整个生命周期中保持对象可用(通过回发持续设置成员)的最佳方式。
我目前使用 Sessions 来执行此操作,但我不确定这是否是最好的方法。
例如:
SearchObject searchObject;
protected void Page_Load(object sender, EventArgs e)
{
if(!IsPostBack)
{
searchObject = new SearchObject();
Session["searchObject"] = searchObject;
}
else
{
searchObject = (SearchObject)Session["searchObject"];
}
}
这允许我在页面上的任何其他位置使用我的 searchObject,但这有点麻烦,因为如果我更改任何属性等,我必须重置我的会话变量。
我认为必须有更好的方法来做到这一点,以便 .NET 不会在每次页面加载时重新实例化该对象,而是将其置于 Page 类的全局范围内?
【问题讨论】:
-
除了下面的答案之外,
ViewState要求存储的项目是可序列化的。否则,您将收到序列化异常。
标签: c# .net session viewstate global-scope