【发布时间】:2015-07-17 10:58:51
【问题描述】:
我正在使用 serialize 和 JSON.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"
这是我的 Action 方法:
public bool SaveDetail(Detail detail)
我错过了什么吗?
【问题讨论】:
-
你不需要
stringify它 - 只需使用data: jsonObj, -
在这种情况下,我会收到
Invalid JSON primitive错误。 -
那么还有其他问题。你确定你已经显示了
<form>标签之间的所有html。表单数据包含LiIdD=的事实表明您没有(属性name="LiIdD"无法控制) -
是的,我很确定。为简洁起见,我删除了一些字段。但我刚刚注意到我的按钮在外面,是我的问题造成的吗?
-
刚刚注意到您有
contentType: 'application/json; charset=utf-8',- 您需要删除该行(除了删除JSON.stringify())。我强烈建议你使用url '@Url.Action("SaveDetail", "R")',
标签: jquery json asp.net-mvc model-binding