2017-10-09 97 views
1

我試圖避免使用querystrings來使用會話變量來傳遞所需的值。 我正在從一個類到一個處理程序。從類到處理程序的Asp.NET C#會話變量

在課堂上使用:

HttpContext.Session["name"] = "Value"; 

在我使用的處理程序:

var name = context.Session["name"]; 

我已經添加了IReadOnlySessionStateIRequiresSessionState但會話變量保持空。

有幫助嗎?

回答

1

我想你正在重新創建新的上下文。您應該使用HttpContext.Current使用同一個會話。 嘗試下面的代碼並參考下面我添加的內容。

string firstName = "Jeff"; 
    string lastName = "Smith"; 
    string city = "Seattle"; 

    // Save to session state in a Web Forms page class. 
    Session["FirstName"] = firstName; 
    Session["LastName"] = lastName; 
    Session["City"] = city; 

    // Read from session state in a Web Forms page class. 
    firstName = (string)(Session["FirstName"]); 
    lastName = (string)(Session["LastName"]); 
    city = (string)(Session["City"]); 

    // Outside of Web Forms page class, use HttpContext.Current. 
    HttpContext context = HttpContext.Current; 
    context.Session["FirstName"] = firstName; 
    firstName = (string)(context.Session["FirstName"]); 
+0

嗨。感謝您的回答...但它不工作... 我設置類中的值,但在處理程序,它仍然爲空。 – user3330412