因为大多数浏览器只支持HTTP GET和POST,所以有一个可以重写HTTP方法的HttpHandler会很有用。
HTTP方法将设置隐藏字段:
<form method="POST" action="...">
<input type="hidden" name="_method" value="PUT">
...
</form>
如果用户提交,则发送POST请求,IHttpHandler应替换请求HttpMethod,但它是read-only property in .NET。
如何在.NET中重写HTTP方法?
答案 0 :(得分:2)
在mvc(ver 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
中更有趣的部分答案 1 :(得分:0)
如果您已经控制了等式的服务器端,为什么不编写代理服务器来为您执行此操作?您可以使用FiddlerCore之类的东西来完成繁重的工作。
它可以在各种应用程序中重用,并且不一定需要特定于IIS和.NET。
答案 2 :(得分:0)
您可以使用HttpContext.Current.Request.RequestType
。此属性不是只读的,您可以在c#上更改它。
有关详细信息,请check this。