C# 尝试使用Request.QueryString时获取对象引用错误
我有一个读取查询字符串的page.aspx,如果QueryString类似于page.aspx?id=1,它将运行一些代码 但是,如果没有指定QueryString,我希望它忽略该代码。如果我只是转到page.aspx。现在,我在页面加载中仅有的代码是C# 尝试使用Request.QueryString时获取对象引用错误,c#,asp.net,query-string,nullreferenceexception,C#,Asp.net,Query String,Nullreferenceexception,我有一个读取查询字符串的page.aspx,如果QueryString类似于page.aspx?id=1,它将运行一些代码 但是,如果没有指定QueryString,我希望它忽略该代码。如果我只是转到page.aspx。现在,我在页面加载中仅有的代码是 if (Request.QueryString["id"].Equals("1")) { //Do something } 如果我转到page.aspx?id=1,这就行了。但是,只要转到page.aspx,就会出现以下错误:
if (Request.QueryString["id"].Equals("1"))
{
//Do something
}
如果我转到page.aspx?id=1,这就行了。但是,只要转到page.aspx,就会出现以下错误:
对象引用未设置为对象的实例
如何加载没有查询字符串的页面?您可以执行以下操作:
if(Request.QueryString.Length != 0)
{
...
}
if(Request.QueryString.AllKeys.Contains("id"))
{
}
如果您试图访问不存在的元素,您将收到一个异常。因此,由于QueryString
的属性为Length
,因此将其与0进行比较意味着根本没有查询字符串
否则,如果您想知道仅当id
键不存在时,您可以执行以下操作:
if(Request.QueryString.Length != 0)
{
...
}
if(Request.QueryString.AllKeys.Contains("id"))
{
}
您需要检查空值
if (Request.QueryString["id"] != null && Request.QueryString["id"].Equals("1"))
{
//Do something
}
这将涵盖任何空引用问题,或仅存在空查询字符串时
if (Request.QueryString != null && Request.QueryString["id"] != null && Request.QueryString["id"] == "1")
{
//do work
}
试试这个:
if (Request.QueryString["id"] != null && Request.QueryString["id"].Equals("1"))
{
//Do something
}
另一种方式:
string id = Request.QueryString["id"] ?? "";
if(id == "1")
{
//Do something
}
每当您看到此错误时:
object reference not set to an instance of an object
知道您正在检查空的或根本不存在的内容
所以试试这个:
if(Request.QueryString["id"] != null)
{
if (Request.QueryString["id"].Equals("1"))
{
//Do something
}
}
在我看来,最好检查
QueryString
键是否也是id
+1无论如何,您的问题是您没有同时检查空值:Request.QueryString[“id”]!=“”&请求。查询字符串[“id”]!=null)
几乎所有的NullReferenceException
情况都是相同的。请参阅“”,以获得一些提示。Request.QueryString.Length
将永远不会为null
,我猜。如果存在QueryString
值,并且它不是id
,那么会怎么样?如果id始终是int,那么您可以使用int.TryParse(Request.QueryString[“which”]),如果它返回true,然后它是一个id,您可以使用它来请求。QueryString.Length将返回int
,因此默认值将始终为0(如果不存在查询字符串)。如果有查询字符串,则不能保证它应该是“id”
compile@Selman22你说得对,我不知道我在想什么,谢谢