为第 0 行请求未知参数“9” - 数据表错误

Posted

技术标签:

【中文标题】为第 0 行请求未知参数“9” - 数据表错误【英文标题】:Requested unknown parameter '9' for row 0 - DataTable error 【发布时间】:2018-04-20 16:38:27 【问题描述】:

我刚刚将带有IEnumerable<model> 的视图更改为IEnumerable<ViewModel>,这触发了此错误通知。发现了一些类似的问题here。还检查了http://datatables.net/tn/4 以了解更多信息,但无法解决此问题。当我恢复使用 Model 而不是 ViewModel 时,它可以正常工作,这让我感到困惑。由于 Model 和 ViewModel 具有相同的属性。

查看:

    @model IEnumerable<ERPLite.Models.DeliveryScheduleVM>


@section Scripts
    <script>
        $(function () 

            $('#TableId').DataTable(
                'paging': true,
                'lengthChange': false,
                'searching': true,
                'ordering': true,
                'info': true,
                'autoWidth': false,
                "scrollX": true,
                'order': [[0, 'desc']]//orderby desc
            )
        )
    </script>


<div class="box">

    <!-- /.box-header -->
    <div class="box-body">
        <table id="TableId" class="table table-bordered table-striped">
            <thead>
                <tr>
                    <th hidden="hidden">@html.DisplayNameFor(model => model.ID)</th>

                    <th>@Html.DisplayNameFor(model => model.ProductName)</th>

                    <th>@Html.DisplayNameFor(model => model.Quantity)</th>

                   <th>Actions</th>
                </tr>
            </thead>
            <tbody>
                @foreach (var item in Model)
                
                    <tr>
                        <td hidden="hidden">
                            @Html.DisplayFor(modelItem => item.ID)
                        </td>

                        <td>
                            @Html.DisplayFor(modelItem => item.ProductName)
                        </td>

                        <td>
                            @Html.DisplayFor(modelItem => item.Quantity)
                        </td>


                    </tr>
                

            </tbody>

        </table>
    </div>
    <!-- /.box-body -->
</div>

动作方法:

  public ActionResult Index()
        
            var deliverySchedules = db.DeliverySchedules.ToList();
            var deliverySchedulesVMList = new List<DeliveryScheduleVM>();
            foreach(var item in deliverySchedules)
            
                var deliveryScheduleVM = new DeliveryScheduleVM();
                deliveryScheduleVM.ID = item.ID;
                deliveryScheduleVM.ProductID = item.ProductID;
                var product = db.Products.Find(item.ProductID);
                deliveryScheduleVM.ProductName = product.ProductName;
                deliveryScheduleVM.Quantity = item.Quantity;
                deliverySchedulesVMList.Add(deliveryScheduleVM);
            
            return View(deliverySchedulesVMList);
        

警告完整说明:

DataTables 警告:表 id=TableId - 请求的未知参数“9” 对于第 0 行。有关此错误的更多信息,请参阅 http://datatables.net/tn/4

感谢任何帮助。提前致谢。

【问题讨论】:

该参数似乎是一个整数,可能您的表格列数超过了 HTML 标记中指定的数量,或者表格单元格的数量不满足DataTable 的要求。 【参考方案1】:

标题列和正文列的数量不匹配,结果证明是问题所在。 标记中的&lt;th&gt;Actions&lt;/th&gt;&lt;tbody&gt; 中没有&lt;td&gt;&lt;/td&gt;。 这真是一个愚蠢的错误,我在更改列时忽略了它。 由于我正在根据警告消息的性质检查数据/列部分,因此在此处发布。

【讨论】:

您的问题代码中没有&lt;th&gt;Actions&lt;/th&gt; @StephenMuecke 抱歉,我在复制时不小心删除了。

以上是关于为第 0 行请求未知参数“9” - 数据表错误的主要内容,如果未能解决你的问题,请参考以下文章

带有 ajax 的 DataTables 1.10.6,为第 0 行请求未知参数 0

为第 0 行请求的未知参数“0”

DataTables 警告(表 id = 'table-filter'):从数据源请求未知参数 '0' 用于数据表中的第 0 行错误

从数据源中为 DataTables 中的第 1 行请求未知参数“0”

DataTables 错误:从第 0 行的数据源请求未知参数“1”

数据表警告从第 0 行的数据源请求未知参数“1”