我正在尝试将两个参数从javascript传递到mvc控制器。第一个是模型,第二个是字符串。
这是html:
<input type="button" onclick="save(Json.Encode(@Html.Raw(model)), @Html.Raw(object.Id))" />
这是javascript:
function save(model, id) {
$.ajax({
url: '@Url.Action("SaveModel", "Test")',
type: "POST",
datatype: "json",
data: { model: model, id: id }
}
});
}
这是控制器:
[HttpPost]
public ActionResult SaveModel(Model model, string id)
{
return null;
}
如果我只传递模型参数data: { model: model }
, 就可以 。请求的帖子变成这样:
AProperty value1
AnotherProperty value2
AnArray[0][Property...
AnArray[1][Property...
etc.
但是如果我尝试传递两个参数data: { model: model, id: id }
,请求的帖子就会变成
model[AProperty] value1
model[AnotherProperty] value2
model[AnArray][0][Property...
model[AnArray][1][Property...
etc.
当请求到达控制器时,模型对象被实例化,但所有值都变为空。我猜串行器失败了。
所有帮助表示赞赏。
答案 0 :(得分:1)
我的同事解决了这个问题。您必须指定内容类型并在模型上进行字符串化,如下所示:
$.ajax({
url: '@Url.Action("SaveModel", "Test")',
type: "POST",
contentType: "application/json",
data: JSON.stringify({ model: model, id: id })
}
});
这可能会在将来帮助其他人。
答案 1 :(得分:0)
您可以尝试使用此JSON library并利用stringify()
$.ajax({
url: '@Url.Action("SaveModel", "Test")',
type: "POST",
datatype: "json",
data: JSON.stringify({ model: model, id: id })
}
});