我有一个ajax形式如下:
@using (Ajax.BeginForm("Action", "Ctrler", null, new AjaxOptions { UpdateTargetId = "divSendML" }, new { id = "frmSendML" }))
{
<div id="divSendML">
@Html.EditorFor(x => x.SomeProperties)
...
<div id="divPreview"></div>
</div>
}
然后我调用一个jquery帖子来更新标签divPreiview的内容,我想发布这个ajax表单的内容:
function PreViewGenerateHtml() {
var form = $("#frmSendML");
$.post("/Ctrler/Action",
form.serializeArray(),
function (data) {
$("#divPreview").html(data);
});
}
[HttpPost]
public ActionResult Action(ActionModel model)
{
}
在服务器端,为什么映射的模型对某些属性没有价值。
不清楚你为什么要写这个PreViewGenerateHtml
javascript函数。当您使用Ajax.BeginForm
并包含jquery不显眼的脚本时,它将自动AJAX化生成的表单,当您单击提交按钮时,它会自动将其异步发送到服务器。
另一方面,如果要手动 AJAXify 窗体,则应使用普通Html.BeginForm
而不是 Ajax.BeginForm,然后将form.serialize()
而不是form.serializeArray()
传递给 $.post
方法。
目标控制器操作将接收与普通 HTML 表单完全相同的 POST 数据。因此,如果您希望默认模型绑定器绑定模型,则必须正确命名输入字段名称。下面是一篇说明绑定到集合的预期格式的文章。
如果您有任何疑问,请使用javascript调试工具(例如FireBug或Chrome开发人员工具栏)来检查与请求一起发送的确切数据负载。