1

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

フォームのシリアル化が機能していないようですが、これを修正する方法がわかりません。これが機能しない理由についての洞察をいただければ幸いです。

ありがとうございました。

4

1 に答える 1