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.
Это странное поведение действительно смущает меня в течение долгого времени.