gpt4 book ai didi

c# - ViewState 与 Session ... 通过页面生命周期维护对象

转载 作者:IT王子 更新时间:2023-10-29 03:57:17 25 4
gpt4 key购买 nike

有人可以解释一下 ViewState 和 Session 之间的区别吗?

更具体地说,我想知道在页面的整个生命周期中保持对象可用(通过回发持续设置成员)的最佳方法。

我目前使用 session 来执行此操作,但我不确定这是否是最佳方法。

例如:

SearchObject searchObject;
protected void Page_Load(object sender, EventArgs e)
{
if(!IsPostBack)
{
searchObject = new SearchObject();
Session["searchObject"] = searchObject;
}
else
{
searchObject = (SearchObject)Session["searchObject"];
}
}

这让我可以在页面上的其他任何地方使用我的 searchObject,但它有点麻烦,因为如果我更改任何属性等,我必须重置我的 session 变量。

我在想一定有更好的方法来做到这一点,这样 .NET 就不会在每次加载页面时都重新实例化对象,而是将它放在 Page 类的全局范围内?

最佳答案

如果搜索对象的大小不是很大,则继续使用 ViewState。如果您只希望对象在当前页面的生命周期内存在,ViewState 是完美的。

session 对象也很好用,但显然一旦搜索对象在那里,它就会在页面的生命周期中停留更长的时间。

另外,我对 ViewState/Session 对象做的一件事是用属性包装它们的访问权限:

public object GetObject
{
get
{
return ViewState["MyObject"];
}
set
{
ViewState["MyObject"] = value;
}
}

我倾向于发现这样做更干净。只需更改上面的代码以满足您的需要。

关于c# - ViewState 与 Session ... 通过页面生命周期维护对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2883149/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com