0

Dropbox API JavaScript Chooserを使用しており、応答からのデータを Controller に返したい

Dropbox API の Javascript オプション

options = {
    success: function (files) {
        $.ajax({
            url: '/FileTransfer/FileData',
            type: "POST",
            dataType: "json",
            //data: JSON.stringify(files[0]),
            data: files,
            success: function (result) {}
        });
    },
    cancel: function () {},
    linkType: "preview", 
    multiselect: true
};

コントローラ アクション

私のコントローラーアクションは現在のところ何もしませんが、データをモデルに渡すことができるようになると、最終的に出力データをモデルにキャッシュします。これが私の問題です。

    public JsonResult FileData(string model)
    {
        return Json(new { success = true });
    }
4

2 に答える 2

0

提案に従ってリファクタリングされたコード

Javascript

options = {
    success: function (files) {
        $.ajax({
            url: '/FileTransfer/FileData',
            type: "POST",
            dataType: "json",
            data: { result : files},
            success: function (result) {
                $("#FileList").load('/FileTransfer/Cloud');
            },
            error : function (jQXHR, textStatus, errorThrown) { }
            });
        },
        cancel: function () {
    },

    linkType: "preview", 
    multiselect: true 
};

コントローラ

public JsonResult FileData(List<DropboxFile> result)
{
    CacheEntity(result);

    return Json(new { success = true });
}
于 2016-07-14T08:54:06.253 に答える
0

ADyson のヒントは私の問題を解決するのに役立ちました、ありがとう

以下のコードを変更します。data: の変更に注意してください。そして、コントローラーで逆シリアル化されます。

Javascript

options = {
    success: function (files) {
        $.ajax({
            url: '/FileTransfer/FileData',
            type: "POST",
            dataType: "json",
            data: { result : JSON.stringify(files) },
            //data: files,
            success: function (result) {
                $("#FileList").load('/FileTransfer/Cloud');
                console.log(result);
             },
            error : function (jQXHR, textStatus, errorThrown) {
                //alert("An error occurred: " + jQXHR.status + " " + textStatus + " " + errorThrown);
            }
        });
    },
    cancel: function () {},
    linkType: "preview", 
    multiselect: true
};

コントローラ

    public JsonResult FileData(string result)
    {
        var convertedResult = JsonConvert.DeserializeObject<List<DropboxFile>>(result);

        CacheEntity(convertedResult);

        return Json(new { success = true });
    }
于 2016-07-12T13:34:28.340 に答える