0021. C# ASP.net MVC 前端javascript傳遞到後端Controller 二維陣列傳遞方法

C#學習筆記

原始程式碼如下:


 var MaxGroup = 5;//群組數量


    var obj = [[]];   //===========================錯誤位置

    var tempGroupName = [];

    for (var i = 1; i < MaxGroup + 1; i++)

    {

        var tempStateList = [];

        //get checkbox

        for (var j = 1 ; j < 16; j++) {

            tempStateList.push($("#autokind_" + i + "_" + j).is(":checked"));

        }

        obj.push(tempStateList)

        tempGroupName.push($("#autokind_name_"+i).val());

    }



    var StoragePlaceParam = {

        'TableName': Param.TableName, //--使用者查詢的TableName

        'Date_Start': Param.Date_Start,

        'Date_End': Param.Date_End,

        'Combination': obj,

        'GroupName': tempGroupName,

        'GroupCount': 5

    };





    //------我們家的網址

    var root = "http://" + location.host;

    if (location.host.indexOf("localhost") == -1) {

        root = "http://" + location.host + "/" + location.pathname.split('/')[1];

    }



    $.ajax({

        type: 'POST',

        url: root + "/api/SingleStockApi/GetSingleStockExtentionKindChart",

        data: StoragePlaceParam,  //------------------------參數丟入

        success: function (data) {



        }

    });

 

以上透過Ajax 傳遞到後端後發生Combination 為null

在後端的Combination 型別為 List<List<bool>> 理論上應該要有值,後來發現是因為

var obj = [[]]; 不可以這樣寫 應該 寫成

var obj = [];

 

var obj =[[]]  實際上為 array  = [[null]]

在傳遞到後端時因為判斷到null 所以List<List<bool>> 會直接視為全為null

如果定義成obj =[] 實際上為 array = []

 

 

//=====================