在jQuery ajax帖子中,ASP.NET MVC3表单集合为0

时间:2013-10-22 19:51:04

标签: javascript jquery asp.net ajax asp.net-mvc

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

我正在尝试POST一个使用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

这几乎就像表单的序列化不起作用,但我不知道如何解决这个问题。我真的很感激为什么这不起作用。

谢谢。

1 个答案:

答案 0 :(得分:1)

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