Request [ "key" ] vs Request.Params [ "key" ] vs Request.QueryString [ "key" ]

Request["key"] vs Request.Params["key"] vs Request.QueryString["key"]

Какой метод вы используете опытные программисты? и почему?

Ответ 1

Я рекомендую 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 дает понять, в чем заключается ваше намерение.

Ответ 2

Я предпочитаю использовать Request.QueryString["key"], потому что он помогает знать код точно, откуда вы получаете данные. Я обычно не использую Request.Params["key"], потому что он может ссылаться на файл cookie, строку запроса и несколько других вещей; поэтому пользователю нужно немного подумать. Чем меньше времени кому-то нужно выяснить, что вы думаете, тем легче поддерживать код.

Ответ 3

HttpRequest.Params или Request.Params получает почти все (querystring, form, cookie и переменные сеанса) из httprequest, тогда как Request.Querystring только вытащит querystring... все зависит от того, что вы делаете в то время.

Ответ 4

Я всегда четко указываю коллекцию. Если по какой-то причине вы хотите разрешить переопределения, код "получить" для каждого из них и написать четкий код, который показывает вашу иерархию для выбора одного над другим. IMO, мне не нравится получать ценность из нескольких источников без четкой бизнес-причины для этого.

Ответ 5

Как любезное уведомление, если вы установите requestValidationMode = "4.5" в файле web.config, как Request.QueryString [ "key" ], так и Request [ "key" ] будут использовать "ленивую загрузку" поведение как дизайн.

Однако, как-то Request.Params [ "key" ] по-прежнему вызывает проверку как поведение 4.0.

Это странное поведение действительно смущает меня в течение долгого времени.