亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

Ajax 對象數組到方法

Ajax 對象數組到方法

C#
慕蓋茨4494581 2021-11-28 20:10:33
我一直在嘗試將這個數組ajax 到我的控制器,但是當它到達時數據被設置為空。我的功能:function saveChanges() {var grid = $("#GridName").data("kendoGrid");var gridData = grid.dataSource.data();var dataArray = [];for (var i = 0; i < gridData.length; i++) {    dataArray.push({Date: gridData[i].Date, Name: gridData[i].ProductName});}$.ajax({    url: GetUrlRoot() + "Controller/Method",    data: { gridData: dataArray },    async: false,    success: function () {    },    error: function () {    },    cache: false,})grid.saveChanges();}我的控制器:public virtual string Method(List<DateName> gridData)    {        return string.Empty;    }public class DateName{    public DateTime Date { get; set; }    public string Name { get; set; }}控制器識別出已發送 1 條記錄,但該記錄的值為空。
查看完整描述

3 回答

?
喵喔喔

TA貢獻1735條經驗 獲得超5個贊

 data: { gridData: dataArray },

在java腳本中將匹配c#中的以下對象模型


public class GridDataObject {

    public List<DateName> gridData { get; set; }

}

但是,這與中的參數參數不匹配


public virtual string Method(List<DateName> gridData)

因此,首先,更新控制器操作以期望從客戶端發送所需的對象模型。


一個簡單的例子在控制器中看起來像這樣


[HttpPost]

public virtual string Method(GridDataObject data) {

    //...


    var gridData = data.gridData;


    //...


    return string.Empty; //strictly for demo purposes.        

}

其次,客戶端需要使用正確的格式發送數據。


//...


var url = GetUrlRoot() + "Controller/Method";

var data  = { gridData: dataArray };

$.ajax({

    url: url,

    type: 'POST',

    data: data,

    async: false,

    success: function () {


    }

    error: function () {


    },

    cache: false,

});


查看完整回答
反對 回復 2021-11-28
?
阿晨1998

TA貢獻2037條經驗 獲得超6個贊

使用dataType: "json"和traditional: true


$.ajax({

    url: GetUrlRoot() + "Controller/Method",

    data: dataArray,

    async: false,

    dataType: "json",

    traditional: true,

    success: function () {


    },

    error: function () {


    },

    cache: false,

})


查看完整回答
反對 回復 2021-11-28
?
慕碼人2483693

TA貢獻1860條經驗 獲得超9個贊

在您的 jQuery Ajax 部分:


將設置數據更改為:


data: JSON.stringify(dataArray),

method: 'POST', //or type:'POST' based on jQuery version

...

然后您還可以將控制器更改為:


public virtual string Method([FromBody]DateName[] gridData){

...

}

因此,通過這些更改,$.ajax 會將 JSON 發布到您的控制器,并且您的控制器將從請求正文中解析 JSON。


查看完整回答
反對 回復 2021-11-28
  • 3 回答
  • 0 關注
  • 222 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號