我可以每次会话拥有静态属性吗?

时间:2013-07-09 05:35:04

标签: c# asp.net webforms

我已经为我的表单提供了部分类作为代码隐藏

private object x;

我正试图在Page_Load

上使用它
protected void Page_Load(object sender, EventArgs e) {
    if (x != null)
        y = x;

第一次它是null但是然后点击TreeView中的一个元素我将它设置为某个对象并且它在那里不为空。它在表格上显示。

当我尝试使用网络表单中的对象时,表单再次处理Page_Loadx在那里为空。如何为每个公开会话保持x静态?

1 个答案:

答案 0 :(得分:3)

据我所知,请求之间的会话不会保留静态。你可能想在这里使用Session字典。这是所有代码隐藏页面文件中的内容。

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保留不同的值。

希望这有帮助。

相关问题