Книга: ASP.NET MVC Framework
Http***Attribute и перегрузка типов запросов
Http***Attribute и перегрузка типов запросов
Ранее в ASP.NET MVC для ограничения выполнения действия в ответ на тип запроса применялся атрибут AcceptverbsAttribute
с параметрами из перечисления HttpVerbs
. В ASP.NET MVC 2 представлены альтернативные атрибуты для короткой записи: HttpPostAttribute, HttpPutAttribute, HttpGetAttribute, HttpDeleteAttribute
.
Кроме атрибутов сокращенной формы, ASP.NET MVC 2 предлагает еще один механизм работы с запросами, который нацелен на REST-сценарии. При работе с REST-приложениями важной задачей ставится правильное оперирование типами запросов. Однако не все браузеры поддерживают типы запросов типа PUT или DELETE. Для преодоления этой проблемы в MVC 2 вводится новый метод расширения Html.HttpMethodOverride
, который используется для перегрузки типа запроса, применяемого на форме. Например, в следующем коде формируется POST-форма (по умолчанию) с перегрузкой параметра запроса в PUT с помощью Html.HttpMethodOverride
:
<% using(Html.BeginForm()) {%>
<%= Html.HttpMethodDverride(HttpVerbs.Put) %>
<%} %>
Этот механизм работает следующим образом: вызов Html.HttpMethodOverride
формирует на форме следующее скрытое поле:
<input name="X-HTTP-Method-Override" type="hidden" value="PUT" />
При получении запроса с формы ASP.NET MVC ищет скрытое поле со значением X-HTTP-Method-Override и, если оно найдено, предполагает, что запрос представляет собой тип, указанный в скрытом поле. Таким образом, указанный ранее пример вызовет действие, помеченное атрибутом HttpPut
, но не HttpPost
, т. к. форма содержит перегруженный тип запроса. Перегрузка значения может выполняться не только с помощью скрытого поля, но и с помощью заголовков HTTP или параметров строки запроса.
Следует учесть, что перегрузка запросов возможна только для POST-запросов. Во всех других случаях скрытый параметр X-HTTP-Method-Override игнорируется.
- RequireHttpsAttribute
- Attributes
- Улучшенный оптимизатор запросов
- Асинхронный сервер и отмена выполняющихся запросов
- Использование типов содержимого и столбцов
- 1. Оператор Select – базовый оператор языка структурированных запросов
- 2. Унарные операции на языке структурированных запросов
- 3. Бинарные операции на языке структурированных запросов
- 4. Использование подзапросов
- 5.3 Классификация типов резервного копирования
- Перегрузка методов с несколькими параметрами типа
- 2.7 Преобразования типов