Asp.net会话变量

时间:2012-03-08 18:51:51

标签: c# asp.net session-variables

我有一个带有c#代码的asp.net项目。我有一个名为GlobalVariable的静态类,我存储了一些信息,例如当前选择的产品。

但是,我看到当有两个用户使用该网站时,如果有人更改了所选产品,则会为每个人更改。静态变量似乎与每个人都是相通的。

我想创建(来自c#代码)某种会话变量,它只使用c#代码,但不仅来自页面,而且来自任何类。

3 个答案:

答案 0 :(得分:25)

是静态变量由整个应用程序共享,它们绝不是用户/会话的私有。

要从非页面类访问Session对象,您应该使用HttpContext.Current.Session

答案 1 :(得分:8)

GlobalVariable是一个误导性的名称。无论它叫什么,如果是每个会话,它不应该是static。你可以这样做:

// store the selected product
this.Session["CurrentProductId"] = productId;

您不应该尝试全局访问Session集合。相反,只传递您需要的数据,并在适当的时候使用Session获取/设置。

以下是在MSDN上使用session storage in ASP .NET的概述。

答案 2 :(得分:8)

你回答了自己的问题。答案是会话变量。在GlobalVariable类中,您可以放置​​由会话变量支持的属性。

示例:

public string SelectedProductName 
{
    get { return (string)Session["SelectedProductName"]; }
    set { Session["SelectedProductName"] = value; }
}