2013-12-11 102 views
0

我需要從會話變量中讀取值。讀取會話變量並在讀取值後將其刪除

如果會話變量存在,我想在讀取值後刪除它。

要閱讀會話變量我嘗試以下選項:

String session1 = context.Session["test"] as String; 

var session2 = context.Session["test"]; 

第一個給我空,第二個我的預期值。

爲什麼?

我應該如何讀取會話變量,檢查是否存在以及是否讀取了值並刪除會話變量?

謝謝你, 米格爾

+0

第一個給你null,因爲Session [「test」]中的任何內容都不是一個字符串,所以「as」返回null。 – aquinas

+0

執行會話變量的數據類型是什麼?它是一個字符串嗎?如果沒有,那可能是你的問題。請參閱[documentation](http://scspfprd01/IT/APPDEV/DN/_layouts/15/start.aspx#/):「as運算符就像是一個強制操作,但如果轉換不可行,則爲返回null而不是引發異常。「 – David

+0

這可能有所幫助。 http://blog.nerdbank.net/2008/06/when-not-to-use-c-keyword.html – David

回答

2

檢查是否會話值存在時,讀出的值,然後將其刪除,就像這樣:

if(context.Session["test"] != null) 
{ 
    // Read value 
    string sessionValue = context.Session["test"].ToString(); 

    // Delete value from session 
    context.Session.Remove("test"); 
} 
1

使用??避免空值

String session1 = context.Session["test"] as String ?? String.Empty; 
+0

但是如果我想在刪除它之後不需要檢查它是否存在? –

+0

butt這不會刪除會話變量 –

+0

如果你想刪除它後...只是做它context.Session.Remove(「測試」); –