我整个下午都在尝试在web上爬行,试图在操作控制器中接收一个JSON对象。
做这件事的正确和/或更容易的方法是什么?
我尝试了以下几种方法: 1:
//Post/ Roles/AddUser
[HttpPost]
public ActionResult AddUser(String model)
{
if(model != null)
{
return Json("Success");
}else
{
return Json("An Error Has occoured");
}
}
这在我的输入上给了一个空值。
2:
//Post/ Roles/AddUser
[HttpPost]
public ActionResult AddUser(IDictionary<string, object> model)
{
if(model != null)
{
return Json("Success");
}else
{
return Json("An Error Has occoured");
}
}
这给了我一个500错误的jquery端,这是试图发布到它?(这意味着它没有正确绑定)。
下面是我的jQuery代码:
<script>
function submitForm() {
var usersRoles = new Array;
jQuery("#dualSelectRoles2 option").each(function () {
usersRoles.push(jQuery(this).val());
});
console.log(usersRoles);
jQuery.ajax({
type: "POST",
url: "@Url.Action("AddUser")",
contentType: "application/json; charset=utf-8",
dataType: "json",
data: JSON.stringify(usersRoles),
success: function (data) { alert(data); },
failure: function (errMsg) {
alert(errMsg);
}
});
}
我想做的就是在mvc操作中接收JSON对象?
发布于 2014-02-05 21:48:41
这里有几个问题。首先,您需要确保将JSON对象绑定回控制器中的模型。这是通过更改
data: JSON.stringify(usersRoles),
至
data: { model: JSON.stringify(usersRoles) },
其次,您没有使用jquery调用正确地绑定类型。如果您删除
contentType: "application/json; charset=utf-8",
它将固有地绑定回一个字符串。
一起使用第一个ActionResult方法和下面的jquery ajax调用:
jQuery.ajax({
type: "POST",
url: "@Url.Action("AddUser")",
dataType: "json",
data: { model: JSON.stringify(usersRoles) },
success: function (data) { alert(data); },
failure: function (errMsg) {
alert(errMsg);
}
});
发布于 2014-02-05 21:54:51
您正在发送一个字符串数组
var usersRoles = [];
jQuery("#dualSelectRoles2 option").each(function () {
usersRoles.push(jQuery(this).val());
});
因此相应地更改模型类型
public ActionResult AddUser(List<string> model)
{
}
发布于 2016-12-14 06:53:14
顺便说一句,这对我来说不起作用,直到我在ajax调用中使用了以下代码:
contentType: "application/json; charset=utf-8",
使用Asp.Net MVC4。
https://stackoverflow.com/questions/21578814
复制相似问题