如何检查Request.QueryString具有特定的值或不在ASP.NET中?

我有一个error.aspx页面。 如果用户访问该页面,那么它将使用Request.QueryString["aspxerrorpath"]来获取page_load()方法URL中的错误path,并且它工作正常。

但是,如果用户直接访问该页面,则会生成一个exception,因为aspxerrorpath不存在。

我如何检查aspxerrorpath是否存在?

你可以检查null

 if(Request.QueryString["aspxerrorpath"]!=null) { //your code that depends on aspxerrorpath here } 

检查参数的值:

 // .NET < 4.0 if (string.IsNullOrEmpty(Request.QueryString["aspxerrorpath"])) { // not there! } // .NET >= 4.0 if (string.IsNullOrWhiteSpace(Request.QueryString["aspxerrorpath"])) { // not there! } 

如果不存在,则该值为null (如果存在),但没有值设置,则为空string。

我相信上面的方法可以满足你的需求,而不仅仅是对null的testing,因为空string对于你的具体情况来说同样糟糕。

 string.IsNullOrEmpty(Request.QueryString["aspxerrorpath"]) //true -> there is no value 

如果有价值,将返回

要检查一个空的QueryString,你应该使用Request.QueryString.HasKeys属性。

要检查密钥是否存在:Request.QueryString.AllKeys.Contains()

然后你可以得到ist的价值,并做任何你想要的其他检查,如isNullOrEmpty等

你也可以尝试:

 if (!Request.QueryString.AllKeys.Contains("aspxerrorpath")) return; 

那么更直接的方法呢?

 if (Request.QueryString.AllKeys.Contains("mykey") 

要解决您的问题,请在页面的Page_Load方法中写下以下行。

 if (String.IsNullOrEmpty(Request.QueryString["aspxerrorpath"])) return; 

.Net 4.0提供了更接近空值,空值或空白string的使用方法,如下所示:

 if(string.IsNullOrWhiteSpace(Request.QueryString["aspxerrorpath"])) return; 

如果查询string没有aspxerrorpath,这将不会运行您的下一个语句(您的业务逻辑)。

认为你正在寻找的检查是这样的:

 if(Request.QueryString["query"] != null) 

它返回null因为在该查询string中它没有该键的值。