2

HTTP PUT 要求の本文を処理しようとしていますが、MVC エンジン (またはおそらくそれを支える ASP.NET スタック) が、要求のフォーム コレクションを自動的に解析して本文データを入力していないようです。

これは、POST を実行するときに期待どおりに機能します。

リクエストの InputStream プロパティには期待されるデータが含まれていることに注意してください。明らかに、それを使用して独自のキー/値のコレクションを作成できますが、PUT が POST と同じように機能することを期待していました。

ここで何か不足していますか?

アクションメソッドの例:

[AcceptVerbs(HttpVerbs.Put)]
public ActionResult Purchase(int id, FormCollection data)
{
  // Do stuff with data, except the collection is empty (as is Request.Form)
}
4

2 に答える 2

2

ドキュメントからの引用:

Form コレクションは、POST メソッドを使用するフォームを使用して、HTTP 要求本文にポストされたフォーム要素の値を取得します。

したがって、使用する代わりにRequest.Form、リクエスト データを保持してアクション パラメータとして渡すカスタム モデル クラスを作成することをお勧めします。デフォルトのモデル バインダーは、リクエスト ストリームで渡されたキー/値からプロパティを自動的に入力します。

[AcceptVerbs(HttpVerbs.Put)]
public ActionResult Purchase(MyCustomModel model)
{
    // Do stuff with the model
}
于 2010-06-30T06:17:20.430 に答える
0

Asp.net は、カスタム リクエストの PUT をサポートしていません。組み込みの機能を使用して PUT URL を生成していない場合は、ヘッダー、フォーム、またはクエリ文字列にX-HTTP-Method-Override値を追加してみてください。PUT

于 2011-05-03T11:32:14.857 に答える