1

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");

    }

実際、メソッドActionControllerで取得しているように、配列を渡すことはできますか?ActionController CreateFolderobject object

ありがとう

4

1 に答える 1

2

簡単なことではありませんが、ここにそれを行う方法があります。最初に ajax メソッドを次のように変更します。

$.ajax({
        type: 'post',
        datatype: 'json',
        url: '/Home/CreateFolder',
        traditional: true,
        data: { list: JSON.stringify(array)},
        success: function (result) {
            alert(result);
        }
    });

JavascriptSerializer次に、コントローラーで、クラスを使用して json を逆シリアル化する必要があります。私の例では、コントローラー コードの下に記載されているフォルダーというクラスを使用しました。この型を使用する必要はありません。渡して他の場所で使用したい場合は、単純に見えました。コントローラーで次の操作を行います。

    [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("");
    }

上記で使用したFolderタイプと、新しいフォルダーを受け取るコンストラクターを次に示します。

public class Folder
{
    public Folder(Dictionary<string, object> newFolder)
    {
        if (newFolder.ContainsKey("dir"))
        {
            Directory = (string)newFolder["dir"];
        }
        if (newFolder.ContainsKey("dirToCreate"))
        {
            DirectoryToCreate = (string)newFolder["dirToCreate"];
        }
    }
    public string Directory { get; set; }
    public string DirectoryToCreate { get; set; }
}
于 2012-04-13T09:17:12.557 に答える