如何将JSON数据(使用Jquery创建的列表)传递给MVC中的控制器中的操作?

问题描述 投票:0回答:1

我在jquery中有一个函数,它创建一个从复选框中选择的值列表。现在我希望在我的控制器操作中有这个列表。我已将此列表转换为JSON但我无法将其传递给控制器​​。我还尝试创建对应于json数据的自定义模型。

Jquery代码

$("button").click(function () {
             //alert("clicked");
             var obj = {};
             //var tempRadio = [];
             for (var i = 1; i <= globalVar; i++) {
                 if ($("#" + i).prop("checked") == true) {
                     obj[i] = $('input[class=' + i + ']:checked').val();


                 }
             }

             $.ajax({

                     contentType: 'application/json; charset=utf-8',
                     dataType: 'json',
                     type: 'POST',
                     url: '@Url.Action("SkillAdd","User")',
                     data: JSON.stringify(obj),
                     //data:  hello,

                     error:function ()
                     {
                         alert("Error");
                     }, 
                     success: function () {
                         alert(JSON.stringify(obj));
                     }
                 });




         });

控制器代码

public ActionResult SkillAdd(List<string> Id, List<string> Name)
    {
        return View();
    }

控制器代码与自定义模型

public ActionResult SkillAdd(List<MyModel> object)
    {
        return View();
    }
asp.net-mvc
1个回答
0
投票

你有一个javascript对象,但你需要创建一个数组,以便它可以在post发布到List。所以将你的js代码更改为:

var obj = [];  // it's array now

然后你会在循环中添加项目:

obj.push( $('input[class=' + i + ']:checked').val());

并在您的ajax调用名称中,您在控制器操作中拥有的参数:

data:{ Id : obj }

现在你可以在动作方法List<string>中有一个参数来保存ajax调用发布的数据。

public ActionResult SkillAdd(List<string> Id)
{
    return View();
}

希望能帮助到你。

© www.soinside.com 2019 - 2024. All rights reserved.