我正在开发一个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
这几乎就像表单的序列化不起作用,但我不知道如何解决这个问题。我真的很感激为什么这不起作用。
谢谢。
答案 0 :(得分:1)
由于您正在发送表单参数,因此您使用的contentType
不正确,这反过来又导致服务器无法接收您的数据,因为它预计会显示html并且没有收到任何数据。要解决此问题,只需从contentType
中删除$.ajax
选项。