2011-03-15 18 views
1

ほとんどのブラウザはHTTP GETとPOSTのみをサポートしているため、HTTPメソッドを書き換えることができるHttpHandlerを持つと便利です。 HTTPメソッドは、隠しフィールドで設定されますASP .NETを使用したHTTPメソッドの書き換え

:ユーザーが送信した場合

<form method="POST" action="..."> 
    <input type="hidden" name="_method" value="PUT"> 
    ... 
</form> 

、POSTリクエストが送信され、IHttpHandlerは要求を交換する必要がありますHTTPMETHODが、それはread-only property in .NETです。

.NETでHTTPメソッドを書き換えるにはどうすればよいですか?

答えて

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" />

いくつかの詳細情報:

http://geekswithblogs.net/michelotti/archive/2010/01/08/implementing-a-delete-link-with-mvc-2-and-httpmethodoverride.aspx

をUPDATE:

が少し深くに探してこれがMVCパイプラインでどのように機能するかこれは実際にMVC(ActionMethodSelectorAttribute、ActionInvoker、RedirectToRoute)です。これは私が前に考えたように RouteModuleではなく、これを処理します。

MVCソース(codeplexから)で見ることができます...それはかなりstrightforwardです。より興味深い部分は、HttpRequestBaseExtensionsとHttpRequestExtensionsにあります。

0

あなたがすでに方程式のサーバー側を制御している場合、これを行うためのプロキシサーバーを作成してみませんか?あなたは重い持ち上げを行うにはFiddlerCoreのようなものを使うことができます。

さまざまなアプリケーションで再利用でき、必ずしもIISと.NET固有のものである必要はありません。

0

HttpContext.Current.Request.RequestTypeを使用できます。このプロパティは読み取り専用ではなく、C#で変更できます。

詳細については、check thisを参照してください。

関連する問題