我有一个page.aspx读取查询字符串,如果QueryString类似于page.aspx?id = 1,它会运行一些代码。
但是,如果没有指定QueryString,我希望它只是忽略该代码。如果我只是去page.aspx。现在,我在页面加载时唯一的代码是
if (Request.QueryString["id"].Equals("1"))
{
//Do something
}
如果我去page.aspx?id = 1那就行。但是,只需转到page.aspx就会出现这个错误:
对象引用未设置为对象的实例
如何加载没有查询字符串的页面?
答案 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
}
}