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

时间:2014-05-13 12:44:56

标签: 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就会出现这个错误:

  

对象引用未设置为对象的实例

如何加载没有查询字符串的页面?

5 个答案:

答案 0 :(得分:8)

您需要检查空值

if (Request.QueryString["id"] != null && Request.QueryString["id"].Equals("1"))
{
   //Do something
}

答案 1 :(得分:3)

你可以这样做:

if(Request.QueryString.Length != 0)
{
   ...
}

如果您尝试访问不存在的元素,您将收到异常。因此,由于QueryString的属性为Length,因此将其检查为0表示根本没有查询字符串。

否则,如果您只想知道id密钥不存在,您可以这样做:

if(Request.QueryString.AllKeys.Contains("id"))
{

}

答案 2 :(得分:1)

这将涵盖任何空引用问题或仅存在空查询字符串

if (Request.QueryString != null && Request.QueryString["id"] != null && Request.QueryString["id"] == "1")
{
//do work
}

答案 3 :(得分:1)

试试这个:

if (Request.QueryString["id"] != null && Request.QueryString["id"].Equals("1"))
{
 //Do something
}

另一种方式:

string id = Request.QueryString["id"] ?? "";
if(id == "1")
{
     //Do something
}

答案 4 :(得分:0)

每当您看到此错误时:

     object reference not set to an instance of an object

知道你正在检查一些空的或根本不存在的东西

所以试试这个:

    if(Request.QueryString["id"] != null)
     {
        if (Request.QueryString["id"].Equals("1"))
        {
               //Do something
        }
     }