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

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

對象引用 Null - 將 jQuery 數組傳遞給 C# 列表

對象引用 Null - 將 jQuery 數組傳遞給 C# 列表

C#
烙印99 2022-01-09 11:00:24
我有一個簡單的問題,但它變得復雜。我正在嘗試使用jQuery和在后端傳遞一個對象數組,我正在使用它C#來獲取列表。所以這是我到目前為止所嘗試的:jQuery :$('#btnStrickOff').on('click', function () {    var formData = new FormData();    debugger;    var rowindexes = $('#jqxgrid').jqxGrid('getselectedrowindexes');    for (var i = 0; i < rowindexes.length; i++) {        var row = $('#jqxgrid').jqxGrid('getrowdata', rowindexes[i]);        formData.append('strData[' + i + '].empno', row.empno);        formData.append('strData[' + i + '].Name', row.Name);        formData.append('strData[' + i + '].Des', row.Des);        formData.append('strData[' + i + '].Dept', row.Dept);        formData.append('strData[' + i + '].Section', row.Section);        formData.append('strData[' + i + '].Emp_type', row.Emp_type);        formData.append('strData[' + i + '].LateAtt', row.LateAtt);        formData.append('strData[' + i + '].Diff', row.Diff);    }    var url = '@Url.Action("InsertStrikeOff")';    debugger;    $.ajax({        type: 'POST',        url: url,        dataType: 'json',        data: JSON.stringify({ 'things': formData }),        contentType: false,        processData: false,        async: false,        success: function (data) {            alert("Updated. - "+data);        }    });});所以這個想法是:有一個表,每一行都有一個CheckBox與之關聯的。每當用戶檢查一行或多行時,它應該在 an 中包含行數據Array并迭代,然后在Ajax調用中傳遞給 C# 控制器。這是C#代碼部分:C#:public JsonResult InsertStrikeOff(List<DailyStrikeOffBO> things){   DateTime strikeDate = DateTime.Now;   var value = (dynamic)null;   foreach (var item in things)   {      bool chk = Facede.StrikeOff.CheckStrikeOff(item.empno);      if (chk == false)      {         bool aStrikeOffBo = Facede.StrikeOff.InserstrikeOffLst2(item.empno, item.Name, item.LateAtt, strikeDate, item.remarks);         value = "<div style='color:green;'>Striked-off request sent!</div>";      }      else      {         value = "<div style='color:red;'>Already striked off!</div>";      }   }不幸的是,每次調用C#控制器時我都會收到此錯誤,盡管我很確定我在做正確的事情 - Object reference not set to an instance of an object。我在這里錯過了什么?
查看完整描述

2 回答

?
浮云間

TA貢獻1829條經驗 獲得超4個贊

您不能發布包含的對象FormData- 您需要發送實際FormData對象。此外,您name與發布到的模型不匹配,該模型是一個集合,而不是包含集合的對象。


假設DailyStrikeOffBO包含 properties empno,Name,Des` 等,那么您需要將名稱/值對附加為


formData.append('[' + i + '].empno', row.empno);

formData.append('[' + i + '].Name', row.Name);

formData.append('[' + i + '].Des', row.Des);

.... // etc

然后將ajax選項修改為


$.ajax({

    type: 'POST',

    url: url,

    dataType: 'json',

    data: formData , // modify

    contentType: false,

    processData: false,

    async: false,

    success: function (data) {

        alert("Updated. - "+data);

    }

});


查看完整回答
反對 回復 2022-01-09
?
慕慕森

TA貢獻1856條經驗 獲得超17個贊

for (a = 0; a < rowindexes.length; a++) {

            var row = $('#jqxgrid').jqxGrid('getrowdata', rowindexes[i]);

                var model = {

                    empno : row.empno,

                    Name: row.Name,                    

                    Des: row.Des,

                    Dept: row.Dept,

                    Section: row.Section,

                    Emp_type:  row.Emp_type,

                    Diff: row.Diff,

                    LateAtt: row.LateAtt

                };


                data.push(model);

            }   

var modelString = JSON.stringify(data);

    $.ajax({

        type: 'POST',

        url: url,

        dataType: 'json',

        data: modelString ,

        contentType: "application/json; charset=utf-8",

        processData: false,       

        success: function (data) {

            alert("Updated. - "+data);

        }

    });

而不是使用 FormData 嘗試使用 json 對象。您通過 ajax ( data: JSON.stringify({ 'things': formData }), ) 傳遞數據的方式也是不正確的。


試試上面的代碼,讓我知道它是怎么回事。


查看完整回答
反對 回復 2022-01-09
  • 2 回答
  • 0 關注
  • 209 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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