1

我正在开发一个 ASP.NET MVC3 应用程序。

我正在尝试使用jQuery.ajax api 发布到返回一堆数据的方法;但是,每当服务器处理请求时,我的表单集合的键计数为 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

1

由于您正在发送表单参数,因此contentType您使用的参数不正确,这反过来又会导致服务器无法接收您的数据,因为它需要 html 并且没有接收任何数据。要解决它,只需contentType$.ajax.

于 2013-10-22T20:10:05.913 回答