C# 使用jquery传递给actioncontroller asp.net mvc 3的数组

C# 使用jquery传递给actioncontroller asp.net mvc 3的数组,c#,jquery,asp.net-mvc,arrays,asp.net-mvc-3,C#,Jquery,Asp.net Mvc,Arrays,Asp.net Mvc 3,我想知道如何在jquery ajax调用传递的asp.net mvc3控制器数组中进行迭代 我的Ajax调用: var array = []; array.push({ dir: id }); array.push({ dirToCreate: $("#txtDir").val() }); $.ajax({ Type: 'GET

我想知道如何在jquery ajax调用传递的asp.net mvc3控制器数组中进行迭代

我的Ajax调用:

                var array = [];
                array.push({ dir: id });
                array.push({ dirToCreate: $("#txtDir").val() });

                $.ajax({
                    Type: 'GET',
                    url: '/Home/CreateFolder/',
                    data: { 'list': array },
                    traditional: true,
                    cache: 'true',
                    success: function (result) {
                        alert(result);
                    }
                });
这是我的ActionController:

    public ActionResult CreateFolder (IEnumerable<string> list  )
    {
        // how to iterate through the values passed
        return Content("ok");

    }
    [HttpPost]
    public ActionResult CreateFolder(string list)
    {
        var js = new JavaScriptSerializer();
        var deserializedObject = (object[])js.DeserializeObject(list);
        var myFolders = new List<Folder>();

        if (deserializedObject != null)
        {
            foreach (Dictionary<string, object> newFolder in deserializedObject)
            {
                myFolders.Add(new Folder(newFolder));
            }
        }

        return Json("");
    }
public ActionResult创建文件夹(IEnumerable列表)
{
//如何迭代传递的值
返回内容(“确定”);
}
实际上,我可以像在
ActionController
CreateFolder
方法
对象
中获得的那样将数组传递给
ActionController


谢谢

这不是一件直截了当的事,但这里有一个方法。首先将ajax方法更改为:

$.ajax({
        type: 'post',
        datatype: 'json',
        url: '/Home/CreateFolder',
        traditional: true,
        data: { list: JSON.stringify(array)},
        success: function (result) {
            alert(result);
        }
    });
然后在控制器中,需要使用
JavascriptSerializer
类对json进行反序列化。在我的示例中,我使用了一个名为folder的类,它位于控制器代码下面。你不必使用这种类型,如果你想通过并在其他地方使用它,它看起来更干净。在控制器中执行以下操作:

    public ActionResult CreateFolder (IEnumerable<string> list  )
    {
        // how to iterate through the values passed
        return Content("ok");

    }
    [HttpPost]
    public ActionResult CreateFolder(string list)
    {
        var js = new JavaScriptSerializer();
        var deserializedObject = (object[])js.DeserializeObject(list);
        var myFolders = new List<Folder>();

        if (deserializedObject != null)
        {
            foreach (Dictionary<string, object> newFolder in deserializedObject)
            {
                myFolders.Add(new Folder(newFolder));
            }
        }

        return Json("");
    }

您好,这似乎是一个很好的解决方案,您的jquery代码与我所说的不同之处在于JSON.stringify(),当我们从jquery传递JSON类型数据时,我们是否需要始终作为JSON.stringify()类型传递?我所看到的一些代码没有将JSON数据传递给actioncontroller的功能,我们应该每次都指定它吗?我在Ajax调用中指定了datatype:json,这是唯一的区别(我在Ajax调用中错过了缓存线,但您可以在中添加它,这没有什么区别)。我只使用json.stringify,因为在本例中,我们使用的是JavaScript数组:)