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
。您是否回滚了我的更改并自己进行了完全相同的编辑?我不是那个拒绝我帖子上的更改的人