我需要从会话变量中读取值。读取会话变量并在读取值后将其删除
如果会话变量存在,我想在读取值后删除它。
要阅读会话变量我尝试以下选项:
String session1 = context.Session["test"] as String;
var session2 = context.Session["test"];
第一个给我空,第二个我的预期值。
为什么?
我应该如何读取会话变量,检查是否存在以及是否读取了值并删除会话变量?
谢谢你, 米格尔
我需要从会话变量中读取值。读取会话变量并在读取值后将其删除
如果会话变量存在,我想在读取值后删除它。
要阅读会话变量我尝试以下选项:
String session1 = context.Session["test"] as String;
var session2 = context.Session["test"];
第一个给我空,第二个我的预期值。
为什么?
我应该如何读取会话变量,检查是否存在以及是否读取了值并删除会话变量?
谢谢你, 米格尔
检查是否会话值存在时,读出的值,然后将其删除,就像这样:
if(context.Session["test"] != null)
{
// Read value
string sessionValue = context.Session["test"].ToString();
// Delete value from session
context.Session.Remove("test");
}
使用??
避免空值
String session1 = context.Session["test"] as String ?? String.Empty;
但是如果我想在删除它之后不需要检查它是否存在? –
butt这不会删除会话变量 –
如果你想删除它后...只是做它context.Session.Remove(“测试”); –
第一个给你null,因为Session [“test”]中的任何内容都不是一个字符串,所以“as”返回null。 – aquinas
执行会话变量的数据类型是什么?它是一个字符串吗?如果没有,那可能是你的问题。请参阅[documentation](http://scspfprd01/IT/APPDEV/DN/_layouts/15/start.aspx#/):“as运算符就像是一个强制操作,但如果转换不可行,则为返回null而不是引发异常。“ – David
这可能有所帮助。 http://blog.nerdbank.net/2008/06/when-not-to-use-c-keyword.html – David