在ASP.NET中,保存变量的最佳方式是什么?

13

我该如何在 asp.net 的 postback 之间保存变量? 我正在使用 HttpContext.Current.Items,但它总是在 postback 后释放,有没有其他选项可以做到这一点?


会话(Session),视图状态(ViewState),缓存(Cache)。在此处查看详细信息:http://msdn.microsoft.com/zh-cn/magazine/cc300437.aspx#S9 - Ashwini Verma
2个回答

12

如果你的变量不可序列化或者你不希望客户端能够读取它的值 => 使用inProc Session。

如果你的变量可以序列化,但是你不希望客户端能够读取它的值 => 使用数据库Session。

如果你的变量可以序列化且可以允许客户端读取它的值,并且它只应在页面后续提交序列期间在页面范围内存在 => 你应该使用ViewState。


10
ViewState["YourVariable"] = "123";

ViewState集合就是为了这个目的而存在,在上面的例子中,YourVariable是您想要保存的变量,而123是此变量的值。

ViewState可以在页面范围内访问。如果您想在不同页面之间保留值,可以使用会话,例如:ViewState["YourVariable"] = "123";


但是 ViewState 始终在客户端>服务器<客户端之间发送,我需要能够从另一个类中访问的东西。 - Endiss
1
ViewState 可以在页面范围内访问。如果您想在不同页面之间传递值,可以使用会话,例如 ViewState["YourVariable"] = "123"; - Adil
4
你的意思是:如果你想在不同页面间传递变量值,你可以使用会话(session),比如 Session["你的变量名"] = "123"; - sajad
使用 ViewState 技术会增加页面的大小,所以最好使用 Session 变量。只要确保在不再需要 Session 变量时将其删除即可。 - R.S.K

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接