C# 查询字符串错误

C# 查询字符串错误,c#,request.querystring,C#,Request.querystring,为什么此代码会抛出NullReferenceException 例外情况: if ((string.IsNullOrEmpty(Request.QueryString["Sno"].ToString())) && (string.IsNullOrEmpty(Request.QueryString["Name"].ToString()))) { lblBookedBy.Text = ""; lblSno.Text = ""; } else { lbl

为什么此代码会抛出
NullReferenceException

例外情况:

if ((string.IsNullOrEmpty(Request.QueryString["Sno"].ToString())) 
   && (string.IsNullOrEmpty(Request.QueryString["Name"].ToString())))
{
    lblBookedBy.Text = "";
    lblSno.Text = "";
}
else
{
    lblBookedBy.Text = Request.QueryString["Name"].ToString();
    lblSno.Text = Request.QueryString["Sno"].ToString();
}
System.NullReferenceException:对象引用未设置为对象的实例。

代码:

if ((string.IsNullOrEmpty(Request.QueryString["Sno"].ToString())) 
   && (string.IsNullOrEmpty(Request.QueryString["Name"].ToString())))
{
    lblBookedBy.Text = "";
    lblSno.Text = "";
}
else
{
    lblBookedBy.Text = Request.QueryString["Name"].ToString();
    lblSno.Text = Request.QueryString["Sno"].ToString();
}

您正在尝试将
Request.QueryString[“Sno”]
转换为字符串,而其值为
null

这很可能是因为集合查询字符串中没有键“Sno”或“Name”,这在尝试对其调用.ToString()时会导致异常

在调用.ToString()之前,请检查Request.QueryString[“Sno”]或Request.QueryString[“Name”]是否为null。请使用而不是
。ToString()
,以避免null引用异常:

if (string.IsNullOrEmpty(Convert.ToString(Request.QueryString["Sno"])) && string.IsNullOrEmpty(Covert.ToString(Request.QueryString["Name"])))
{
    lblBookedBy.Text = "";
    lblSno.Text = "";
}
else
{
    lblBookedBy.Text =Convert.ToString(Request.QueryString["Name"]);
    lblSno.Text =Convert.ToString(Request.QueryString["Sno"]);
}

如果
Request.QueryString[“Sno”]
Request.QueryString[“Name”]
未返回任何对象,则调用ToString将在null检查中引发异常

Remove.ToString(),因为当查询字符串参数不可用时,您正试图将null变量类型转换为字符串

if ((string.IsNullOrEmpty(Convert.ToString(Request.QueryString["Sno"]))) && (string.IsNullOrEmpty(Covert.ToString(Request.QueryString["Name"]))))

我建议你做以下几点

if (Request.QueryString["Sno"] == null || Request.QueryString["Name"] == null)
{
    lblBookedBy.Text = "";
    lblSno.Text = "";
}
else
{
    lblBookedBy.Text = Request.QueryString["Name"].ToString();
    lblSno.Text = Request.QueryString["Sno"].ToString();
}
您很可能在
if
语句中得到
NullReference
。这样,您肯定不会遇到这种情况,最坏的情况是,如果两个变量都实例化了,但一个或多个变量包含空字符串,则只需将
文本
设置为

或者,如果您使用了
Convert.ToString
以及其他许多建议,您可以跳过
if
语句来简化代码

lblBookedBy.Text = Convert.ToString(Request.QueryString["Name"]);
lblSno.Text = Convert.ToString(Request.QueryString["Sno"]);
在最坏的情况下,其中一个将为
Null
,并将导致其中一个文本框显示结果,而另一个文本框为空


另外,假设
Request.QueryString
支持它,您可以使用。

是的,我知道它们为null,但在此之后,应该运行else部分。为什么出错?@Gaurav您能将null转换为字符串吗?if语句检查它们是否都为null(或空),如果其中只有一个为null,您将看到此错误。在你的if测试中使用or。你检查过我的答案了吗?这里回答的其他人都疯了,对吗?如果
[“Sno”]
[“Name”]
为空,它将抛出异常。我不明白它们中的任何一个怎么可能为空。我没有在
if
语句中执行
ToString
。编辑被拒绝,但您的解决方案也可以,但在我的回答中不需要,因为值不可能为
Null
。您是否回滚了我的更改并自己进行了完全相同的编辑?我不是那个拒绝我帖子上的更改的人