首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何接收JSON作为MVC 5动作方法参数

如何接收JSON作为MVC 5动作方法参数
EN

Stack Overflow用户
提问于 2014-02-05 21:32:54
回答 3查看 220.4K关注 0票数 71

我整个下午都在尝试在web上爬行,试图在操作控制器中接收一个JSON对象。

做这件事的正确和/或更容易的方法是什么?

我尝试了以下几种方法: 1:

代码语言:javascript
复制
//Post/ Roles/AddUser
[HttpPost]
public ActionResult AddUser(String model)
{
    if(model != null)
    {
        return Json("Success");
    }else
    {
        return Json("An Error Has occoured");
    }

}

这在我的输入上给了一个空值。

2:

代码语言:javascript
复制
//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代码:

代码语言:javascript
复制
<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对象?

EN

回答 3

Stack Overflow用户

发布于 2014-02-05 21:48:41

这里有几个问题。首先,您需要确保将JSON对象绑定回控制器中的模型。这是通过更改

代码语言:javascript
复制
data: JSON.stringify(usersRoles),

代码语言:javascript
复制
data: { model: JSON.stringify(usersRoles) },

其次,您没有使用jquery调用正确地绑定类型。如果您删除

代码语言:javascript
复制
contentType: "application/json; charset=utf-8",

它将固有地绑定回一个字符串。

一起使用第一个ActionResult方法和下面的jquery ajax调用:

代码语言:javascript
复制
    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);
        }
   });
票数 15
EN

Stack Overflow用户

发布于 2014-02-05 21:54:51

您正在发送一个字符串数组

代码语言:javascript
复制
var usersRoles = [];
jQuery("#dualSelectRoles2 option").each(function () {
    usersRoles.push(jQuery(this).val());
});   

因此相应地更改模型类型

代码语言:javascript
复制
 public ActionResult AddUser(List<string> model)
 {
 }
票数 4
EN

Stack Overflow用户

发布于 2016-12-14 06:53:14

顺便说一句,这对我来说不起作用,直到我在ajax调用中使用了以下代码:

代码语言:javascript
复制
contentType: "application/json; charset=utf-8",

使用Asp.Net MVC4。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21578814

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档