DataTable 中的 Ajax 在 .net 6 中不起作用

问题描述 投票:0回答:1

我在控制台中没有收到任何错误。并且控制器方法中的断点永远不会被调用。 (对不起,我的英语不好)。问题是该方法永远不会从 ajax 中调用。 请帮忙。

HTML:

<!-- Modal -->
<div id="modal-inclusion" class="modal fade" tabindex="-1" role="dialog" aria-labelledby="exampleModalCenterTitle" aria-hidden="true">
    <div class="modal-dialog modal-dialog-centered" role="document">
        <div class="modal-content">
            <div class="modal-header">
                <h2 class="modal-title text-center" id="exampleModalCenterTitle">Solicitar inclusión</h2>
                <button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close"></button>
            </div>
            <div class="modal-body">
                <!-- Header -->
                <div class="card-header">
                    <div class="row justify-content-between align-items-center flex-grow-1">
                        <div class="col-12 col-md">
                            <div class="d-flex justify-content-between align-items-center">
                                <h5 class="card-header-title">Users</h5>
                            </div>
                        </div>

                        <div class="col-auto">
                            <!-- Filter -->
                            <form>
                                <!-- Search -->
                                <div class="input-group input-group-merge input-group-flush">
                                    <div class="input-group-prepend input-group-text">
                                        <i class="bi-search"></i>
                                    </div>
                                    <input id="datatableWithSearchInput" type="search" class="form-control" placeholder="Search users" aria-label="Search users">
                                </div>
                                <!-- End Search -->
                            </form>
                            <!-- End Filter -->
                        </div>
                    </div>
                </div>
                    <!-- Table -->
                    <div class="table-responsive datatable-custom">
                        <table id="tb_renovaciones_inclusion js-datatable table table-borderless table-thead-bordered table-nowrap table-align-middle card-table"
                               data-hs-datatables-options='{
               "order": [],
               "search": "#datatableWithSearchInput",
               "isResponsive": false,
               "isShowPaging": false,
               "pagination": "datatableWithSearchPagination"
             }'>
                            <thead class="thead-light">
                                <tr>
                                    <th scope="col">Poliza</th>
                                    <th scope="col">Tipo</th>
                                    <th scope="col">Vigencia</th>
                                    <th scope="col">Inclusión</th>
                                </tr>
                            </thead>

                            <tbody>
                            </tbody>
                        </table>
                    </div>
                    <!-- End Table -->
                    <!-- Footer -->
                    <div class="card-footer">
                        <!-- Pagination -->
                        <div class="d-flex justify-content-center justify-content-sm-end">
                            <nav id="datatableWithSearchPagination" aria-label="Activity pagination"></nav>
                        </div>
                        <!-- End Pagination -->
                    </div>
                    <!-- End Footer -->
            </div>
            <div class="modal-footer">
                <button type="button" class="btn btn-white" data-bs-dismiss="modal">Cancelar</button>
                <button type="button" class="btn btn-primary" data-bs-dismiss="modal">Cerrar</button>
            </div>
        </div>
    </div>
</div>
<!-- End Modal -->

Javascript:

<script>
    (function(){
        console.log("Se hace la llamada al controlador")
        $('#tb_renovaciones_inclusion').DataTable({

            "destroy": true, //Para destruir la inicializacion del init
            "order": [[3, "asc"]], // asc y desc - ya no xq no lo estoy ordenando en el store procedure sql
            "paging": false, // Para que te muestre todo los valores
            "isResponsive": false, // Falta averiguar que realiza
            "isShowPaging": false, // Falta averiguar que realiza

            "sScrollY": "100%", // Tiene que ver con el scroll de la tabla
            "sScrollX": false, // Tiene que ver con el scroll de la tabla

            "ajax": {
                "url": "@Url.Action("ListarRenovacionesTotales", "JsonConexion")",
                "type": "GET",
                "datatype": "json"
            },
            "columns": [
                {
                    "render": function (data, type, full, meta) {
                        console.log(full);
                        return '<td><span class="d-block text-primary text-center">' + full.numeroPoliza + '</span><span class="badge bg-soft-info text-info d-flex text-center justify-content-center align-items-center">' + full.descripcionCortoRamo + '</span></td>';
                    }
                },
                {
                    "render": function (data, type, full, meta) {
                        return '<td><span class="d-block mb-0 h5">' +full.tipoVigencia+ '</span><span class="d-block fs-5">' +full.formaPagoPrima+ '</span></td>';
                    }
                },

                {
                    "render": function (data, type,full, row) {
                        return '<td><span class="d-block mb-0"> I: ' + full.vigenciaInicio+ '</span><span class="d-block fs-5"> F: ' + full.vigenciaFin+ '</span></td>';
                    }
                },

                {
                    "render": function (data, type, full, meta) {
                        return '<td><a class="justify-content-center d-flex align-items-center" href="/Cliente/renovar-poliza-riesgos-humanos?id=' + full.id_Poliza+'"><i class="fs-2 fa-solid fa-repeat" style = "color: #0700C9;" ></i></a></td>';
                    }
                },
                // { "data": "msjEnviados" },
            ]

        });
        console.log("el método ya se ejecutó")

    })()
   

</script>

控制器:

[HttpGet]
public JsonResult ListarRenovacionesTotales()
{
    string userName = _httpContextAccessor.HttpContext?.User?.Identity?.Name; //ID USUARIO

    DetalleUsuarioDA detalleUsuarioDA = new DetalleUsuarioDA();

    DetalleUsuario detalleUsuario = detalleUsuarioDA.GetDetalleUsuario(userName);

    List<QueryPolizaPrimaViewModel> lista = new List<QueryPolizaPrimaViewModel>();

    var polizaDA = new PolizaDA();

    lista = polizaDA.ListarPolizaPrimaClienteSctr(detalleUsuario.Fk_Cliente).ToList();

    if (lista.Count > 0)
    {
        return Json(new
        {
            data = lista.Select(item => new {
                Id_Poliza = item.Id_Poliza,
                Fk_Cliente = item.Fk_Cliente,
                NumeroPoliza = item.NumeroPoliza,
                Fk_Ramo = item.Fk_Ramo,
                VigenciaInicio = item.VigenciaInicio.ToString("dd/MM/yyyy"),
                VigenciaFin = item.VigenciaFin.ToString("dd/MM/yyyy"),
                DocumentoPrima = item.DocumentoPrima,
                FormaPagoPrima = item.FormaPagoPrima,
                PrimaNeta = item.PrimaNeta,
                ImporteComisionBroker = item.ImporteComisionBroker,
                Moneda = item.Moneda,
                EstadoPoliza = item.EstadoPoliza,
                Asegurado = item.Asegurado,
                TipoVigencia = item.TipoVigencia,
                DescripcionCortoRamo = item.DescripcionCortoRamo,
            })
        });
    }
    else
    {
        // Si la lista está vacía, retorna un mensaje de error
        return Json(new { data = "lista-vacia" });
    }


}

我尝试设置断点并使用 console.log(full) 但这不起作用。

javascript c# ajax datatables .net-6.0
1个回答
0
投票

不触发ajax的原因是你的表中有

id="tb_renovaciones_inclusion js-datatable table table-borderless table-thead-bordered table-nowrap table-align-middle card-table"
。恐怕你想要的是
id="tb_renovaciones_inclusion" class="js-datatable table table-borderless table-thead-bordered table-nowrap table-align-middle card-table"

由于 DOM 有很多“id”,因此表格无法按预期呈现。当我们删除其他id后,就可以触发API了。

© www.soinside.com 2019 - 2024. All rights reserved.