2013-12-11 62 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(“测试”); –