Может любой сказать мне является там любым различием между:
Request.QueryString["id"]
и Request["id"]
Если да, который лучше для использования?
Запрос ["id"]
получает значение из QueryString
, формы
, файлов cookie
или ServerVariables
коллекции. Порядок их поиска не указан в документации, но когда вы посмотрите на исходный код, вы увидите, что это именно тот порядок, в котором они упоминаются.
Поэтому, если вы знаете, где находится ваша переменная, что вы обычно делаете, лучше использовать более конкретную опцию.
Согласно документациииндексатор HttpRequest
Член коллекции QueryString, Form, Cookies или член коллекции ServerVariables указанный в параметре key.
Я бы предпочел использовать Request.QueryString["id"]
, поскольку в этом случае более очевидно, откуда берется значение.
Коллекция запросов - это надмножество QueryString вместе с некоторыми другими данными, относящимися к текущему запросу.
что касается «лучше» - я бы посоветовал вам быть точным и явным (например, использовать QueryString), чтобы избежать фактора неожиданности, когда вы получаете неожиданные результаты, просто чтобы понять, что вы использовали ключ, для которого данный запрос не предоставил значение строки запроса, но существует в какой-то другой коллекции.
Request.QueryString["id"] просматривает коллекцию, переданную в QueryString. Request.Item["id"] просматривает все коллекции (QueryString, Form, Cookies или ServerVariables). Поэтому свойство QueryString следует предпочесть, когда это возможно, поскольку оно меньше.
Согласно 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;
}
}
Request.QueryString ["id"]
вернет значение элемента в строке запроса с ключом id
, тогда как Request ["id"]
вернет элемент из одного из Request.QueryString, Request.Form, Request.Cookies или Request.ServerVariables.
Стоит упомянуть, что документация для Request.Item
(это то, к чему вы на самом деле обращаетесь, когда вызываете Request ["id"]
) не указывает порядок, в котором будет выполняться поиск в коллекциях, поэтому теоретически вы можете получить другой результат в зависимости от того, на какой версии asp.net вы работаете.
Если вы знаете , что нужное значение находится в строке запроса, всегда лучше использовать Request.QueryString ["id"]
для доступа к нему, а не ] Запрос ["id"]
.