如何在ASP.NET中检查Request.QueryString是否具有特定值?


76

我有error.aspx一页 如果用户访问该页面,它将page_load()使用方法URL获取错误路径,Request.QueryString["aspxerrorpath"]并且可以正常工作。

但是,如果用户直接访问该页面,则该页面将生成异常,因为该页面aspxerrorpath不存在。

如何检查aspxerrorpath是否存在?


我也尝试使用Request.QueryString.Count!= 0,但是问题是,如果用户附加诸如?abc = 1223之类的任何东西,那么它将再次给出异常
Peeyush 2011年

Request.QueryString.Count != 0只会告诉您是否根本没有参数。
奥德

Answers:


124

您可以检查以下内容null

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

由于它的工作原理我想,以前不过那个时候它不工作,但现在它的working..may被遗失的东西,时间:-)。
Peeyush

5
@Peeyush您可能会发现您试图将其强制转换为'.ToString()',因此在测试null值本身之前尝试将null强制转换为字符串值。这是一个常见的错误。
Phill Healey 2014年

请注意,如果没有值,这将无法检查QueryString中是否存在键。
保护者

2
在Mvc核心中,它是request.Query.ContainsKey(“ aspxerrorpath”)
Dhanuka777'3

35

检查参数的值:

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

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

如果不存在,则值为null,如果确实存在,但未设置任何值,则为空字符串。

我相信上面的内容比测试更适合您的需求null,因为空字符串对您的特定情况同样有害。


2
如果.NET == 4.0怎么办?使用IsNullOrWhiteSpace
克里斯

1
如果.NET == 4.0?使用IsNullOrWhiteSpace
Mike W

12

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

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

然后,您可以获取ist的Value并进行其他所需的检查,例如isNullOrEmpty等。


5
Request.QueryString.AllKeys.Contains()当键存在但没有值时,实际上将返回false。
保护者


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

如果有值将返回


3

那更直接的方法呢?

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

2

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

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

.Net 4.0可以更仔细地查看null,空字符串或空格字符串,如下行所示使用它:

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

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


2

认为您要查找的支票是这样的:

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

null之所以返回,是因为在该查询字符串中,该键没有任何值。


1
Request.QueryString.GetValues(null).Contains(“ query”)
user5690126 2015年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.