Различие между запросом. QueryString [“идентификатор”] и запрос [“идентификатор”]

Может любой сказать мне является там любым различием между:

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

Если да, который лучше для использования?

7
задан Richard Everett 10 August 2010 в 11:56
поделиться

6 ответов

Запрос ["id"] получает значение из QueryString , формы , файлов cookie или ServerVariables коллекции. Порядок их поиска не указан в документации, но когда вы посмотрите на исходный код, вы увидите, что это именно тот порядок, в котором они упоминаются.

Поэтому, если вы знаете, где находится ваша переменная, что вы обычно делаете, лучше использовать более конкретную опцию.

13
ответ дан 6 December 2019 в 09:17
поделиться

Согласно документациииндексатор HttpRequest

Член коллекции QueryString, Form, Cookies или член коллекции ServerVariables указанный в параметре key.

Я бы предпочел использовать Request.QueryString["id"], поскольку в этом случае более очевидно, откуда берется значение.

1
ответ дан 6 December 2019 в 09:17
поделиться

Коллекция запросов - это надмножество QueryString вместе с некоторыми другими данными, относящимися к текущему запросу.

что касается «лучше» - я бы посоветовал вам быть точным и явным (например, использовать QueryString), чтобы избежать фактора неожиданности, когда вы получаете неожиданные результаты, просто чтобы понять, что вы использовали ключ, для которого данный запрос не предоставил значение строки запроса, но существует в какой-то другой коллекции.

3
ответ дан 6 December 2019 в 09:17
поделиться

Request.QueryString["id"] просматривает коллекцию, переданную в QueryString. Request.Item["id"] просматривает все коллекции (QueryString, Form, Cookies или ServerVariables). Поэтому свойство QueryString следует предпочесть, когда это возможно, поскольку оно меньше.

1
ответ дан 6 December 2019 в 09:17
поделиться

Согласно 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;
    }
}
1
ответ дан 6 December 2019 в 09:17
поделиться

Request.QueryString ["id"] вернет значение элемента в строке запроса с ключом id , тогда как Request ["id"] вернет элемент из одного из Request.QueryString, Request.Form, Request.Cookies или Request.ServerVariables.

Стоит упомянуть, что документация для Request.Item (это то, к чему вы на самом деле обращаетесь, когда вызываете Request ["id"] ) не указывает порядок, в котором будет выполняться поиск в коллекциях, поэтому теоретически вы можете получить другой результат в зависимости от того, на какой версии asp.net вы работаете.

Если вы знаете , что нужное значение находится в строке запроса, всегда лучше использовать Request.QueryString ["id"] для доступа к нему, а не ] Запрос ["id"] .

1
ответ дан 6 December 2019 в 09:17
поделиться
Другие вопросы по тегам:

Похожие вопросы: