私はパーティーに少し遅れていますが、Ajaxの投稿/フォームを使用してRequest.Formにアクセスできる代替手段を提供します。これはMVC4とjQuery1.9.1でテストされました。
application/json
コントローラーのRequest.FormがAjax投稿に入力されていない場合は、contentTypeが(一般的なシナリオ)のデータを手動でシリアル化してコントローラーに送信している可能性があります。
これは、コントローラーにRequest.Formを設定しないjQuery.ajaxの例です。
// JSON serialized form data.
var data = {"id" : "1234", "name" : "Dave"};
$.ajax({
type: "POST",
url: serviceUrl,
contentType: "application/json",
dataType: "json",
data: JSON.stringify(data || {}),
success: function () { }
});
contentTypeを変更すると、コントローラーはフォーム送信のように投稿を処理します。
// Form encoded data. See jQuery.serialize().
var data = "id=1234&name=Dave";
$.ajax({
type: "POST",
url: serviceUrl,
contentType: "application/x-www-form-urlencoded; charset=UTF-8",
dataType: "json",
data: data,
success: function () { }
});
application/x-www-form-urlencoded; charset=UTF-8
jQueryのデフォルトであるため、contentTypeを未定義のままにすることもできます。
何が起こっているのかをよりよく説明するために$.ajaxのみを使用したことに注意してください。$ .postを使用することもできますが、フォームでエンコードされたデータを送信する必要があります