如何在.NET C#中检查会话是否存在,或其值为空或为null

14

有人知道如何在.NET C# Web应用程序中检查会话是否为空或null吗?

例如:

我有以下代码:

 ixCardType.SelectedValue = Session["ixCardType"].ToString();

在我的代码中,Session["ixCardType"] 总是显示错误(错误消息:对象引用未设置为对象的实例)。是否有任何方式可以在执行 .ToString() 之前检查会话状态?


2
你可能尝试过先将Session[item]与null进行比较吗? - Anthony Pegram
1
@Anthony:这个问题存在的事实令人感到害怕。我投了反对票并建议关闭。 - Alastair Pitts
3个回答

24

像 'if' 这样简单的语句应该可以工作。

 if(Session["ixCardType"] != null)    
     ixCardType.SelectedValue = Session["ixCardType"].ToString();

如果您希望在会话值为null时返回空字符串,可以使用以下内容:

ixCardType.SelectedValue = Session["ixCardType"] == null? "" : Session["ixCardType"].ToString();

16

使用as运算符将object转换为所需的class类型,如果值无法转换或者本身为null,则返回null

string value = Session["ixCardType"] as string;

if (String.IsNullOrEmpty(value))
{
    // null or empty
}

5
+1 for as,这是 C# 中最酷的鲜为人知的功能之一。 - Richard J. Ross III

1

您可以将结果分配给一个变量,并在调用ToString()之前测试它是否为null/empty:

var cardType = Session["ixCardType"];
if (cardType != null)
{
    ixCardType.SelectedValue = cardType.ToString();
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接