如何检查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中它没有该键的值。