-1

我有一个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 post来更新标签divPreiview的内容,我想发布这个ajax表单的内容:

function PreViewGenerateHtml() {
    var form = $("#frmSendML");
    $.post("/Ctrler/Action",
            form.serializeArray(),
            function (data) {
                $("#divPreview").html(data);
            });
}

[HttpPost]
public ActionResult Action(ActionModel model)
{
}

在服务器端,为什么映射模型对 SomeProperties 没有价值。

4

1 回答 1

0

目前尚不清楚为什么要编写这个PreViewGenerateHtmljavascript 函数。当您使用Ajax.BeginForm并包含 jquery 非侵入式脚本时,它会自动 AJAXify 生成的表单,当您单击提交按钮时,它将异步发送到服务器。

另一方面,如果您想手动 AJAXify 表单,您应该使用普通Html.BeginForm而不是 Ajax.BeginForm,然后传递form.serialize()而不是传递form.serializeArray()$.post方法。

目标控制器操作将接收与普通 HTML 表单完全相同的 POST 数据。因此,如果您希望默认模型绑定器绑定您的模型,则必须正确命名您的输入字段名称。这是一篇文章,说明了绑定到集合的预期格式

如果您有疑问,请使用 javascript 调试工具(例如 FireBug 或 Chrome 开发人员工具栏)来检查与请求一起发送的确切数据负载。

于 2012-10-01T12:28:29.497 回答