Переписать HTTP-метод с ASP .NET
Поскольку большинство браузеров поддерживают только HTTP GET и POST, было бы полезно иметь HttpHandler, который может переписать метод HTTP.
Метод HTTP будет установлен со скрытым полем:
<form method="POST" action="...">
<input type="hidden" name="_method" value="PUT">
...
</form>
Если пользователь отправляет запрос, отправляется запрос POST, и IHttpHandler должен заменить запросы HttpMethod, но это свойство только для чтения в.NET.
Как я могу переписать метод HTTP в.NET?
3 ответа
В mvc (версия 2+) вы можете использовать помощник HtmlHelper.HttpMethodOverride, который создает скрытое входное значение с помощью требуемого метода действия.
http://msdn.microsoft.com/en-us/library/ee402924.aspx
это создает этот скрытый ввод (для удаления):<input name="X-HTTP-Method-Override" type="hidden" value="DELETE" />
немного больше информации:
ОБНОВИТЬ:
Глядя немного глубже, как это работает в конвейере MVC, на самом деле это MVC (ActionMethodSelectorAttribute, ActionInvoker,RedirectToRoute), который обрабатывает это, а не RouteModule, как я думал ранее.
Вы можете посмотреть его в исходном коде MVC (из codeplex)... Это довольно просто. Более интересные части находятся в HttpRequestBaseExtensions и HttpRequestExtensions
Если вы уже управляете серверной частью уравнения, почему бы не написать прокси-сервер, чтобы сделать это для вас? Вы можете использовать что-то вроде FiddlerCore, чтобы сделать тяжелую работу.
Он может быть многократно использован в широком спектре приложений и не обязательно должен быть специфичным для IIS и.NET.
Ты можешь использовать HttpContext.Current.Request.RequestType
, Это свойство не только для чтения, и вы можете изменить его на C#.
Для получения дополнительной информации, проверьте это.