Request["key"]
vs Request.Params["key"]
vs Request.QueryString["key"]
Какой метод вы используете опытные программисты? и почему?
Request["key"]
vs Request.Params["key"]
vs Request.QueryString["key"]
Какой метод вы используете опытные программисты? и почему?
Я рекомендую Request.QueryString["key"]
. Для строки запроса не существует большой разницы в Request["Key"]
, но есть большая (er) разница, если вы пытаетесь получить значение из ServerVariables
. Request["Key"]
ищет значение в QueryString
, если значение null, оно выглядит как Form
, затем Cookie
и, наконец, ServerVariables
.
Использование Params
является самым дорогостоящим. Первый запрос params создает новый NameValueCollection
и добавляет в эту коллекцию каждый из QueryString
, Form
, Cookie
и ServerVariables
. Для второго запроса он более эффективен, чем Request["Key"]
.
Сказав, что разница в производительности для нескольких ключей довольно небрежна. Ключ здесь - это код, который должен показывать намерение, а использование Request.QueryString
дает понять, в чем заключается ваше намерение.
Я предпочитаю использовать Request.QueryString["key"]
, потому что он помогает знать код точно, откуда вы получаете данные. Я обычно не использую Request.Params["key"]
, потому что он может ссылаться на файл cookie, строку запроса и несколько других вещей; поэтому пользователю нужно немного подумать. Чем меньше времени кому-то нужно выяснить, что вы думаете, тем легче поддерживать код.
HttpRequest.Params
или Request.Params
получает почти все (querystring, form, cookie и переменные сеанса) из httprequest, тогда как Request.Querystring
только вытащит querystring... все зависит от того, что вы делаете в то время.
Я всегда четко указываю коллекцию. Если по какой-то причине вы хотите разрешить переопределения, код "получить" для каждого из них и написать четкий код, который показывает вашу иерархию для выбора одного над другим. IMO, мне не нравится получать ценность из нескольких источников без четкой бизнес-причины для этого.
Как любезное уведомление, если вы установите requestValidationMode = "4.5" в файле web.config, как Request.QueryString [ "key" ], так и Request [ "key" ] будут использовать "ленивую загрузку" поведение как дизайн.
Однако, как-то Request.Params [ "key" ] по-прежнему вызывает проверку как поведение 4.0.
Это странное поведение действительно смущает меня в течение долгого времени.