none
Llamar accion de controlador con tres parametros desde ajax RRS feed

  • Pregunta

  • Saludos amigos...

    Les comento trabajo en VS2019 / Asp MVC 5 .net / C#.

    Tengo una datatable con datos, y agregue un botón para llamar a una vista, pero tengo que enviar 3 parámetros, lo cual no logro realizar, ya que la acción del controlador no es llamada en el código que aquí les comparto, y cuando lograba llamar a la vista los parámetros recibidos por la acción del controlador llamado, recibía los valores con datos nulos. Aquí el código de mi script:

    @section scripts{
    <script>
        var dataTabledtMatSemestres;
        var cr_cve_gpo = $('#cr_cve_gpo').val();
        var cr_cve_mat = $('#cr_cve_mat').val();
        var cr_cve_car = $('#cr_cve_car').val();
        var cve_gpo;
        var cve_mat;
        var cve_car;
        $(document).ready(function () {
    
            dataTabledtMatSemestres = $("#dtMatDocentes").DataTable({
                //"serverSide": false,
                //"orderMulti": false,
                //"bFilter": true,
                //scrollY: '50vh',
                //scrollCollapse: true,
    
                "language": {
                    "emptyTable": "No se encontraron registros para mostrar.",
                    "url": "//cdn.datatables.net/plug-ins/1.10.16/i18n/Spanish.json"
                },
                "responsive": "true",
                /*"dom": 'Bfrtilp',*/
                "ajax": {
                    "url": "/Captura/ListarGruposDelDocente",
                    "contentType": "application/json; charset=utf-8",
                    //"data": { cRpe: cRpe},
                    "type": "GET",
                    "datatype": "json"
                },
                "columns": [
                    { "data": "cr_cve_gpo" },
                    { "data": "cr_cve_mat" },
                    { "data": "cr_materia" },
                    { "data": "cr_horario" },
                    { "data": "cr_cve_car" },
                    { "data": "cr_nombre_carrera" },
                    {
                        "data": { cr_cve_gpo: cr_cve_mat, cr_cve_mat: cr_cve_mat, cr_cve_car: cr_cve_mat }, 
                        "orderable": false,
                        "render": function (data, type, row) {
                            //var cRper = "22675";
                            //return "<button class='btn btn-primary AgregaRegBtn btn-xs d-print-none' data-backdrop='static' data-toggle='modal' data-id=" + data + " data-title=" + data + " data-cover_small=" + data + " data-target='#AgregaMateria' title='Clic para agregar la materia seleccionada...'><i class='glyphicon glyphicon-ok'></i> Agregar </button>";
                            return "<a onclick=VerAlumnos(" + data + ")  class='btn btn-secondary btn-xs d-print-none' title='Clic para visualizar grupo...'><i class='fas fa-search'></i> Visualizar </a>";
                        }
                    }
                ]
    
            });
    
        });
    
    
        function VerAlumnos(data) {
            
            cve_gpo = data.cr_cve_gpo;
            cve_mat = data.cr_cve_mat;
            cve_car = data.cr_cve_car;
            $.ajax({
                type: "POST",
                url: '@Url.Action("VisualizarAlumnos", "Captura")/',
                data: "{cr_cve_gpo:" + cve_gpo + "cr_cve_mat:" + cve_mat + "cr_cve_car:" + cve_car + "}"
                });
        }
    </script>

    Este es el código de la acción del controlador llamado:

    [HttpPost]
        public ActionResult VisualizarAlumnos(string cr_cve_gpo, string cr_cve_mat, string cr_cve_car)
        {
            //Declaración de VieModel
            ValidaFechaCapturaEvaluacion_ViewModel edoFechaCaptura = new ValidaFechaCapturaEvaluacion_ViewModel();
            List<tCalendarioExamen_ViewModel> ListaCalendarioCaptura = new List<tCalendarioExamen_ViewModel>();
    
            using (CalificacionesEntities bdC = new CalificacionesEntities())
            {
                //Parametros requeridos en el spValidaFechaCapturaEvaluacion 
                SqlParameter[] param_spValidaFechaCapturaEvaluacion = new SqlParameter[] {
                    new SqlParameter ("@cTipoEvaluacion", "Parcial 2"),
                    new SqlParameter ("@cic_esc", Session["s_ciclo"]),
                    new SqlParameter ("@per_imp", Session["s_periodo"]),
                    new SqlParameter ("@iValidaFechaCaptura", -1),
                };
                var cic_esc_var = Session["s_ciclo"].ToString();
                var per_imp_var = Session["s_periodo"].ToString();
                //Se ejecuta el spValidaFechaCapturaEvaluacion [Valida calendarización de fechas]
                edoFechaCaptura = bdC.Database.SqlQuery<ValidaFechaCapturaEvaluacion_ViewModel>("spValidaFechaCapturaEvaluacion @cTipoEvaluacion, @cic_esc, @per_imp, @iValidaFechaCaptura", param_spValidaFechaCapturaEvaluacion).SingleOrDefault();
                ViewBag.EdoFechaCaptura = edoFechaCaptura.iValidaFechaCaptura.ToString();
    
                //Generamos un lista con las fechas de evaluación
                ListaCalendarioCaptura = bdC.tCalendarioExamen.Where(x => x.cTipoEvaluacion == "Parcial 2" && x.cic_esc == cic_esc_var && x.per_imp == per_imp_var)
                                            .Select(tc_s => new tCalendarioExamen_ViewModel { id = tc_s.id, cTipoEvaluacion = tc_s.cTipoEvaluacion, dfecha_aplicar_inicio = tc_s.dfecha_aplicar_inicio, dfecha_aplicar_fin = tc_s.dfecha_aplicar_fin, dfecha_inicio = tc_s.dfecha_inicio, dfecha_fin = tc_s.dfecha_fin, cic_esc = tc_s.cic_esc, per_imp = tc_s.per_imp, iEdo = tc_s.iEdo })
                                            .ToList();
                ViewBag.Calendarizacion = ListaCalendarioCaptura;
            }
    
            using (EscolaresEntities bdE = new EscolaresEntities())
            {
                SqlParameter[] param_Calificaciones_sp_MuestraAlumnos = new SqlParameter[] {
                        new SqlParameter ("@cve_gpo", cr_cve_gpo),
                        new SqlParameter ("@cve_mat", cr_cve_mat),
                        new SqlParameter ("@cve_car", cr_cve_car)
                    };
                //Se ejecuta el spListaGrupos 
                var Lista_Calificaciones_sp_MuestraAlumnos = bdE.Database.SqlQuery<alumnos_ViewModel>("Calificaciones_sp_MuestraAlumnos @cve_gpo, @cve_mat, @cve_car", param_Calificaciones_sp_MuestraAlumnos).ToList();
    
                //                return Json(new { data = Lista_Calificaciones_sp_MuestraAlumnos }, JsonRequestBehavior.AllowGet);
                return View(Lista_Calificaciones_sp_MuestraAlumnos);
            }
        }

    Agradecería su orientación para realizar el llamado enviando los parámetros...

    Muchas gracias

    miércoles, 21 de abril de 2021 19:42

Todas las respuestas

  • Hola Marco,

    Gracias por levantar tu consulta en los foros de MSDN.

    Eric Ruiz

    ____________________________

    Por favor recuerde "Marcar como respuesta" las respuestas que hayan resuelto su problema, es una forma común de reconocer a aquellos que han ayudado, y hace que sea más fácil para los otros visitantes encontrar la solución más tarde.

    Si tiene algún cumplido o reclamo sobre el soporte de MSDN siéntase en la libertad de contactar MSDNFSF@microsoft.com.

    miércoles, 21 de abril de 2021 22:55
    Moderador