ASP.NET MVC 模型与序列化绑定

ASP.NET MVC model binding with serialize

我正在使用 serializeJSON.stringify 方法对我的 ASP.NET MVC 应用程序进行 Ajax 调用。 MVC 无法绑定模型。

这是我的 JS 代码和强类型视图:

<script>
    function saveDetails() {
        jsonObj = $('#rdform').serialize();
        $.ajax({
            method: "POST",
            url: "R/SaveDetail",
            contentType: 'application/json; charset=utf-8',
            dataType: "json",
            data: JSON.stringify(jsonObj)
        });
    }
</script>

<form id="rdform">
    <div>
        <div>
            @Html.LabelFor(m => m.LiIdH)
            @Html.TextBoxFor(m => m.LiIdH)
        </div>
        <div>
            @Html.LabelFor(m => m.LiIdR)
            @Html.TextBoxFor(m => m.LiIdR)
        </div>
    </div>
    <input type="button" onclick="saveDetails()" />
</form>

请求的有效负载如下所示:

"LiIdH=1&LiIdD=&LiIdR=2"

这是我的操作方法:

public bool SaveDetail(Detail detail)

我是不是漏掉了什么?

您 运行 陷入麻烦的原因是您同时使用了序列化和 JSON.stringify。 form.serialize returns 一个字符串值,传递给 JSON.serialize 时会用一对额外的引号引起来。调用操作方法的最简单方法是删除对 JSON.stringify 的调用,同时删除 contentType 选项ajax调用默认即可,如下图:

<script>
    function saveDetails() {
        $.ajax({
            method: "POST",
            url: "R/SaveDetail",
            dataType: "json",
            data: $('#rdform').serialize()
        });
    }
</script>