C# 尝试使用Request.QueryString时获取对象引用错误

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,就会出现以下错误:

我有一个读取查询字符串的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.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你说得对,我不知道我在想什么,谢谢