ASP.NET MVC3 アプリケーションに取り組んでいます。
jQuery.ajax apiを使用して一連のデータを返すメソッドに POST しようとしています。ただし、リクエストがサーバーによって処理されるたびに、フォーム コレクションのキー カウントが 0 になるため、ビュー モデルに値が入力されず、これが問題になります。
次のように、フォームの送信に ajax を適用しています。
$(document).on("submit", "form", function (event) {
event.preventDefault();
var form = $(this);
$.ajax({
type: "POST",
url: this.action,
data: form.serialize(),
contentType: "application/html; charset=utf-8",
dataType: "html",
success: function (result) {
var d = new Date();
var str = d.toString() + result;
$('#dynamicContent').html(str);
}
});
});
私のフォームは次のように作成されます:
@Using Html.BeginForm("GetContent", "TheController", FormMethod.Post, New With {.id = "GetContentForm"})
@Html.DropDownListFor(Function(model) model.SelectedTypeID, New SelectList(Html.NullListItemOptionList(Model.TypeOptions.ToList, "Please Choose"), "ID", "Name", Model.SelectedTypeID), New With {.onchange = " $(this).parents('form').submit();"})
@<input type="submit" value="Refresh" style="cursor: pointer" />
End Using
<div id="dynamicContent">
</div>
私のコントローラーメソッドは次のとおりです。
<HttpPost()>
Function GetContent(ByVal collection As FormCollection) As PartialViewResult
Dim itemsVM As New ItemsViewModel
TryUpdateModel(itemsVM, collection)
Return PartialView("PartialItems", itemsVM)
End Function
フォームのシリアル化が機能していないようですが、これを修正する方法がわかりません。これが機能しない理由についての洞察をいただければ幸いです。
ありがとうございました。