我可以拥有每个会话的静态属性吗
本文关键字:静态 属性 会话 拥有 我可以 | 更新日期: 2023-09-27 18:21:46
我有一个分部类作为我的表单的代码隐藏,其中我有
private object x;
我正在尝试在Page_Load 上使用它
protected void Page_Load(object sender, EventArgs e) {
if (x != null)
y = x;
第一次它是空的,但通过单击TreeView
中的一个元素,我将它设置为某个对象,在那里它不是空的。它显示在表格上。
当我尝试处理web表单中的对象时,表单再次处理Page_Load
,而x
在那里为空。如何为每个打开的会话保持x
静态?
据我所知,请求之间的会话不会保持静态。你可能想在这里使用会话词典。它包含在所有代码隐藏页文件中。
Session["x"] = 10;
// if you want you can do:
// var x = Session["x"];
if (!String.IsNullOrEmpty(Session["x"]))
{
y = Session["x"];
}
上面的代码没有考虑强制转换x。所以如果y是int,你可以在if块中这样做:
// imagine there's some type safety checks somewhere, yada yada
y = Convert.ToInt32(Session["x"]);
这将为会话的生存期保留变量。为了证明这一点,请尝试同时在两个不同的浏览器中执行此操作。它们都将为x.保留不同的值
希望这能有所帮助。