ASPNETZERO - 数据表问题

exl*_*lnt 1 c# asp.net datatable aspnetboilerplate

我已将我的解决方案升级到最新版本的 ASPNETZERO V4.x。我有两个模板 MVC5 和 .NET Core 版本。我进行了升级,因为我非常喜欢使用 DataTables 插件,并且已经在我的 ASPNETZERO 解决方案的现有版本中的所有代码中实现了。看来 ASPNETZERO 已经实现了 DataTables 的“自定义”版本。现在我升级前的工作数据表正在崩溃。我已将 Metronic 源代码中作为示例提供的可编辑数据表代码复制到我的 ASPNETZERO 解决方案中,并且运行良好。现在在 V4.X 升级之后它已经破坏了这个代码。当我在下载的解决方案中查看租户、角色和用户等页面的 DataTables 使用脚本时,我看到应用于 Datatables 初始化的选项在 Datatables 文档中不存在。例如,在 Datatables.net 文档中找不到初始化属性“listAction”。

        var dataTable = _$usersTable.DataTable({
        listAction: {
            ajaxFunction: _userService.getUsers,
            inputFilter: function () {
                return {
                    filter: $('#UsersTableFilter').val(),
                    permission: $("#PermissionSelectionCombo").val(),
                    role: $("#RoleSelectionCombo").val()
                };
            }
        },
Run Code Online (Sandbox Code Playgroud)

以上让我相信这是 ASPNETZERO 团队的 Datatables 的“自定义”版本。我没有看到有关如何使用此“自定义”版本的任何文档,并且来自 DataTables.net 站点的文档与我在提供的解决方案中看到的代码不匹配。有没有其他人遇到过这样的问题?是否有关于此“自定义”数据表实现的文档?

@Alper 当我说硬编码时,我的意思是这样的:

        <table class="table table-bordered table-striped table-hover" id="tblRel">
        <thead>
            <tr>
                <td>Version</td>
                <td>Publish Date MST</td>
                <td>Publish Date <b>GMT</b></td>
                <td>Release notes</td>
            </tr>
        </thead>
        <tbody>
            <tr class="danger">
                <td>1.0.0.5</td>
                <td></td>
                <td></td>
                <td>
                    <ul>
                        <li>Updated tooltip for resident funding icon on resident index page.</li>
                        <li>Contacts - Added additional column for contact name and emergency contact flag</li>
                        <li>HR - Jobcode - Band level is no longer a required field</li>
                    </ul>
                </td>
            </tr>
            <tr>
        </tbody>
    </table>
Run Code Online (Sandbox Code Playgroud)

和这样的事情:

<table class="table table-striped table-hover table-bordered" id="Contacts">
                        <thead>
                            <tr>
                                <th>@L("ContactName")</th>
                                <th>@L("ContactType")</th>
                                <th>@L("ContactCategory")</th>
                                <th>@L("Email")</th>
                                <th>@L("Phone")</th>
                                <th>@L("DefaultYN")</th>
                                <th>@L("EmergencyYN")</th>
                                <th>@L("Edit")</th>
                            </tr>
                        </thead>
                        <tbody>
                            @if (Model.Company.Contacts.Count != 0)
                            {
                                foreach (var ctc in Model.Company.Contacts)
                                {
                                    <tr>
                                        <td>@(ctc.Contact.ContactName)</td>
                                        <td>@(ctc.Contact.TypeName)</td>
                                        <td>@(ctc.Contact.CategoryName)</td>
                                        <td>@(ctc.Contact.Email)</td>
                                        <td>@(ctc.Contact.Phone)</td>
                                        @if (ctc.Contact.DefaultYN)
                                        {
                                            <td>@L("Yes")</td>
                                        }
                                        else
                                        {
                                            <td>@L("No")</td>
                                        }
                                        @if (ctc.Contact.EmergencyContactYN)
                                        {
                                            <td>@L("Yes")</td>
                                        }
                                        else
                                        {
                                            <td>@L("No")</td>
                                        }
                                        <td>
                                            <a class="edit btn btn-xs btn-primary" href="javascript:;">@L("Edit") </a>
                                        </td>
                                    </tr>
                                }
                            }
                        </tbody>
                    </table>
Run Code Online (Sandbox Code Playgroud)

在以上两个示例中,Datatables 代码未获取表数据。我在这些表上使用的简单初始化在 V4.X 中不再有效。

小智 6

我可以确认,注释掉 AspNetZero 对 DataTables 的所有自定义更改将允许静态 HTML 表正确呈现。随着到位的变化,Loading...屏幕卡住了。

虽然我非常喜欢 AspNetZero,但这是我第二次发现库的自定义更改破坏了它的默认行为,这导致了数小时的故障排除(另一个更改是覆盖jquery.validation默认值的位置.Validate(),因此它不再在表单提交)。

我不介意这些变化——如果它们被记录在案

具体来说:datatable.ajax.js 打破了数据表的默认行为。 它分配一个 ajax 函数,然后阻止默认的静态 HTML 行为工作。要在无需删除 AspNetZero 默认文件的情况下修复您的代码...请执行以下操作:

$('#example').dataTable( {
  ajax: null
});
Run Code Online (Sandbox Code Playgroud)