Javascript 在asp.net WebApi中将表数据序列化为IEnumerable

Javascript 在asp.net WebApi中将表数据序列化为IEnumerable,javascript,c#,html,.net,asp.net-web-api2,Javascript,C#,Html,.net,Asp.net Web Api2,我有一个web api应用程序,其中包含以下代码 public class FiltredDriverAgendaModel { public int Id_driver_agenda { get; set; } public string name_driver_agenda { get; set; } public bool isDriveChecked { get; set; } } Html部分 <table i

我有一个web api应用程序,其中包含以下代码

  public class FiltredDriverAgendaModel
    {
        public int Id_driver_agenda { get; set; }
        public string name_driver_agenda { get; set; }
        public bool isDriveChecked { get; set; }
    }
Html部分

<table id="tbldriver" class="table table-bordered table-striped">
                                            <thead>
                                                <tr style="color:white;background-color:#3c8dbc">
                                                    <th>Id chauffeur</th>
                                                    <th>Chauffeur</th>
                                                    <th> </th>

                                                </tr>
                                            </thead>
                                            <tbody id="tbldriverBody"></tbody>
                                        </table>
问题是,当我创建服务时,
ReservationAgendaByDrivers
如下所示:

 function GetFiltredDrivers() {
        $.ajax({
            type: "Get",
            url: "/api/AccountManage/GetAllChauffeurs",
            success: function (data) {
                EmptyGridFilter();
                for (var i = 0; i < data.length; i++) {
                    var chauffeur = data[i];   
                    $('#tbldriverBody').append('<tr><td><input type="text" readonly name="Id_driver_agenda" value="'+ chauffeur.id+'" />  </td>'
                   + '<td><input type="text"  name="name_driver_agenda" readonly value="' + chauffeur.Nom + " " + chauffeur.Prenom + '" /></td>'
                   + '<td><input type="checkbox"  name="isDriveChecked" checked /> </td></tr>');
                }
                initGridDriver();

                } 
        });
    }
function initGridDriver() {
    var table = $('#tbldriver').dataTable({
        "processing": true,
        "bPaginate": true,
        "bLengthChange": false,
        "bFilter": true,
        "bSort": false,
        "bInfo": true,
        "responsive": true,
        "scrollX": true,
        "scrollY": "200px",
        "scrollCollapse": true,
        "bAutoWidth": false,
        "language": { "url": "//cdn.datatables.net/plug-ins/1.10.7/i18n/French.json" },
        "lengthMenu": [[50, 100, 250, 500, -1], [50, 250, 500, "Tout"]],
        "destroy": true,
        "columnDefs": [
   { "width": "20%", "targets": 0 },
    { "width": "50%", "targets": 1 },
     { "width": "30%", "targets": 2 } 

        ],
        "bAutoWidth": false
    });

    $("#tbldriver tr").css('cursor', 'pointer');

    $('#tbldriverBody').on('click', 'tr', function () {

        if ($(this).hasClass('selected')) {
            $(this).removeClass('selected'); 
        }
        else {

            table.$('tr.selected').removeClass();
            $(this).addClass('selected'); 

        }

    });

}
[HttpPost]
        public IEnumerable<ReservationModel> ReservationAgendaByDrivers(List<FiltredDriverAgendaModel> obj) {}
[HttpPost]
公共IEnumerable ReservationAgendaByDrivers(列表对象){}
我遇到了这个问题:总是
obj
null
作为一个值

所以我需要知道:

  • 我必须选择什么类型的控制器参数
  • 为什么该值为空
  • 如何修复我的代码

  • 谢谢,

    您需要正确命名输入

    我尝试了以下方法,效果很好-只需在obj[index]中替换输入的“name”属性即可。属性如下:

    <tr><td><input type="text" readonly name="obj['+i+'].id" value="'+ chauffeur.id+'" />  </td>'
                   + '<td><input type="text"  name="obj['+i+'].Nom" ...
    
    '
    
    +“我会首先通过ajax调用,通过浏览器的开发者工具/网络选项卡检查发布的数据。你也能贴吗?或者,您可以向它发出警报或将其写入控制台日志。@OguzOzgul这是数据
    Id\u driver\u agenda=15&name\u driver\u agenda=driver2aj+driver2aj&Id\u driver\u agenda=14&name\u driver\u agenda=driver1aj+driver1aj&Id\u driver\u agenda=11&name\u driver\u agenda=ledriver+ledriver&isDriveChecked=on&Id\u driver\u agenda=7&name\u driver\u agenda=afiffement+afiffement&isdrivement=on&Id\u-driver\u-Id\u-agenda=5&isdriver\u-decked=on&Id\u_driver\u agenda=1&name\u driver\u agenda=driverkkkk+driver&isDriveChecked=on
    它说,serialize方法创建一个类似查询字符串的数据,它永远不会转换为您自己类的列表。这里还需要initgriddriver的方法体来提供帮助。因为您是动态生成这些行的,所以我认为最好通过表单读取发布的值,因为您永远无法创建方法签名来严格获取所有参数,可能是通过namevaluecollection来获取
    <tr><td><input type="text" readonly name="obj['+i+'].id" value="'+ chauffeur.id+'" />  </td>'
                   + '<td><input type="text"  name="obj['+i+'].Nom" ...