Request.QueryString [“id”]和Request [“id”]之间的区别

时间:2010-08-10 11:31:50

标签: c# asp.net query-string

任何人都可以告诉我之间有什么区别:

Request.QueryString["id"]Request["id"]

如果是,哪个更好用?

6 个答案:

答案 0 :(得分:13)

Request["id"]QueryStringFormCookiesServerVariables个集合中获取值。它们的搜索顺序没有在文档中指定,但是当您查看源代码时,您将看到它是提及它们的顺序。

因此,如果你知道你的变量所在的位置,你通常会这样做,最好使用更具体的选项。

答案 1 :(得分:3)

Request集合是QueryString的超集,还有一些与当前请求相关的数据。

为了“更好” - 我建议你精确而明确(即使用QueryString)来避免意外因素,当你得到意想不到的结果只是为了意识到你使用了一个给定请求的密钥没有提供查询字符串值,但它存在于其他一些集合中。

答案 2 :(得分:1)

Request.QueryString["id"]将返回查询字符串中具有id键的项的值,而Request["id"]将返回Request.QueryString,Request.Form之一中的项,Request.Cookies或Request.ServerVariables。

值得一提的是Request.Item的{​​{3}}(当您致电Request["id"]时,这是您实际访问的内容)指定订单将搜索集合,因此理论上可以根据您运行的asp.net版本获得不同的结果。

如果您知道您想要的值在您的查询字符串中,那么最好使用Request.QueryString["id"]来访问它,而不是Request["id"]。< /强>

答案 3 :(得分:1)

根据documentation HttpRequest索引器

  

QueryString,Form,Cookies或   ServerVariables集合成员   在key参数中指定。

我更喜欢使用Request.QueryString["id"],因为它更明确地来自值。

答案 4 :(得分:1)

Request.QueryString [“id”]查看每个QueryString传递的集合。 Request.Item [“id”]查看所有集合(QueryString,Form,Cookies或ServerVariables)。因此,QueryString属性应尽可能首选,因为它更小。

答案 5 :(得分:1)

根据Reflector.Net,Request [“id”]定义为:

public string this[string key]
{
    get
    {
        string str = this.QueryString[key];
        if (str != null)
        {
            return str;
        }
        str = this.Form[key];
        if (str != null)
        {
            return str;
        }
        HttpCookie cookie = this.Cookies[key];
        if (cookie != null)
        {
            return cookie.Value;
        }
        str = this.ServerVariables[key];
        if (str != null)
        {
            return str;
        }
        return null;
    }
}