16

今日、これを理解しようとして8時間ほど費やしました。多くのソリューションを見てきましたが、同じ結果が得られません。私は、ASP.Net が比較的新しいことと関係があると思います。

これは、運が悪くて模倣しようとした最新の質問です。 https://stackoverflow.com/questions/10007722/post-array-as-json-to-mvc-controller# =

JSON、jQueryを使用して複雑なオブジェクトの配列をASP.NET MVCコントローラーに投稿する方法は?

問題の基本的な概要: コントローラーに渡したい json オブジェクトの配列があります。データを渡すと、たとえば3つのアイテムが表示されますが、それらの値が渡されないか、何も渡されなかったことを示しています。Firebugはそれを通過したことを示しているので、何かが正しく設定されておらず、C#側でその変数を正しく設定できないと思います。

セットアップ 1: 2 番目のリンクで見たものをモックしてみました:

$.ajax({
        type: 'Post',
        cache: false,
        url: '/Workflow/Home/UpdateStepPositions',
        data: { 'steps': ['1','2','3'] },
        async: false,
        success: function (data) {
            console.debug(data);
        },
        error: function (data) {
            console.debug(data);
        }
    });

 Controller
 [HttpPost]
    public ActionResult UpdateStepPositions(string[] steps){

        var bresults = new {
            Success = false,
            Message = "Unable to update step positions."
        };

        return Json(bresults);
    }

その単純なセットアップを機能させることさえできませんでした..関数に到達し、何も渡されなかったことを示します....

セットアップ 2:

 list = new Array();
    list.push({ "step": 1, "position": 1 });
    list.push({ "step": 2, "position": 2 });
    list.push({ "step": 3, "position": 3 });

    $.ajax({
        type: 'Post',
        cache: false,
        url: '/Workflow/Home/UpdateStepPositions',
        data: JSON.stringify({ 'steps': list }),
        async: false,
        success: function (data) {
            console.debug(data);
        },
        error: function (data) {
            console.debug(data);
        }
    });

    Controller
   [HttpPost]
    public ActionResult UpdateStepPositions(List<UpdatedSteps> steps){
        var bresults = new {
            Success = false,
            Message = "Unable to update step positions."
        };

        return Json(bresults);
    }

   Class
   public class UpdatedSteps {
    public string Step { get; set; }
    public string Position { get; set; }
}

誰かが私が欠けているものに光を当てたり、正しい方向に向けたりすることはできますか? うまくいけば、それは単純なものであり、単なる初心者の間違いです!

4

1 に答える 1

40

MVC は contentType によって受信するデータの種類を検出します。これが実際の例です:

$(function () {
    $.ajax({
        type: 'Post',
        dataType: 'json',
        url: '/Workflow/Home/UpdateStepPositions',
        data: JSON.stringify({ steps: ['1', '2', '3'] }),
        contentType: 'application/json; charset=utf-8',
        async: false,
        success: function (data) {
            console.debug(data);
        },
        error: function (data) {
            console.debug(data);
        }
    });
});

これで、リクエストですべて問題ありません:

Content-Type:        application/json; charset=utf-8
X-Requested-With:    XMLHttpRequest

と応答:

Content-Type:        application/json; charset=utf-8
于 2012-09-24T21:04:41.077 に答える