如何检查请求URI是否包含参数

5

我需要在.NET上的C#课程中,根据URI请求检查该URI是否包含一些参数。

例如:

http://www.website.com/page.aspx?ID=9           // must return YES
http://www.website.com/page.aspx?ID=9&Page=2    // must return YES
http://www.website.com/page.aspx                // must return NO

这是可能的吗?当然我不可能知道URI中每个参数的名称,所以对于类似以下的随机查询字符串:

http://www.website.com/page.aspx?RandomParameter=1

我需要返回“是”,我可以吗?

3个回答

7

在返回一个 string 值时,你需要考虑到 Request.QueryString 可能是 null(即没有传递参数)。

return Request.QueryString != null && Request.QueryString.Count > 0 ? "YES" : "NO";

返回一个 bool 值:

return Request.QueryString != null && Request.QueryString.Count > 0;

6

我已经有一段时间没有涉及这方面的工作了,但是我认为以下内容应该符合您的需求:

解决方案:

if(Request.QueryString != null && Request.QueryString.Count > 0)
{
     return "YES";
}
else
{
     return "NO";
}

内联解决方案(如果这是您需要完成的所有内容):

return (Request.QueryString != null && Request.QueryString.Count > 0) ? "YES":"NO";

您可以在这里找到有关 Request.QueryString 的更多信息 链接


但是 Request.QueryString == null 意味着查询字符串不包含参数吗? - markzzz
抱歉,这只是检查是否存在任何参数并输出“YES”,否则输出“NO”。希望这可以帮到你 :) - Rion Williams
@Rionmonster 在你的代码示例中,Request.QueryString == null 会抛出异常。请参见我上面的回答。 - Chris Snowden
@Chris - 我最初就把它放在那里了。正如我所提到的,我不确定是否有必要。 - Rion Williams
@Rionmonster,这是必要的,因为Request.QueryString可能为null。你对内联解决方案的更新仍然是错误的:Request.QueryString.Count>0 && Request.QueryString != null需要先检查null,像这样Request.QueryString != null && Request.QueryString.Count>0 - Chris Snowden
我很感激,Chris - 就像我说的,我已经有一段时间没有做这个了。(而且今天是度假前的最后一天,所以...:) 为你点赞。 - Rion Williams

3

尝试这种方法,如果请求的页面定义了任何查询字符串参数,则它将返回true,否则将返回false。

if (Request.QueryString.HasKeys())
{
    Response.Write("The requested page URI has parameters");
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接