none
Datos No Pasan al Controller RRS feed

  • Pregunta

  • Saludos, Tengo un script que me permite capturar los datos de mi pagina web

    $("#GuardarTurno").click(function () {
            //captura el Id de las maquinas
            var IdM1 = $("#Maq1").val();
            var IdM2 = $("#Maq2").val();
            var IdM3 = $("#Maq3").val();
    
            if (checkbox1.checked) { ch1 = 1; } else { ch1 = 0; }
            if (checkbox2.checked) { ch2 = 1; } else { ch2 = 0;  }
            if (checkbox3.checked) { ch3 = 1; } else { ch3 = 0;  }
            if (checkbox4.checked) { ch4 = 1; } else { ch4 = 0; }
            if (checkbox5.checked) { ch5 = 1; } else { ch5 = 0; }
            if (checkbox6.checked) { ch6 = 1; } else { ch6 = 0; }
            if (checkbox7.checked) { ch7 = 1; } else { ch7 = 0; }
            if (checkbox8.checked) { ch8 = 1; } else { ch8 = 0; }
            if (checkbox9.checked) { ch9 = 1; } else { ch9 = 0; }
            if (checkbox10.checked) { ch10 = 1; } else { ch10 = 0; }
            if (checkbox11.checked) { ch11 = 1; } else { ch11 = 0; }
            if (checkbox12.checked) { ch12 = 1; } else { ch12 = 0; }
            if (checkbox13.checked) { ch13 = 1; } else { ch13 = 0; }
            if (checkbox14.checked) { ch14 = 1; } else { ch14 = 0; }
            if (checkbox15.checked) { ch15 = 1; } else { ch15 = 0; }
    
            var descrip1 = document.getElementById("descP1desc");
            var descrip2 = document.getElementById("descP2desc");
            var descrip3 = document.getElementById("descP3desc");
           
            var datos = {
                IdOper: $("#CodUsu").val(),   Fecha_Uso: $("#FechTurno").val(),  IdTurno: $("#Turnos").val(),
                IdMaq_1: IdM1, IdMaq_2: IdM2, IdMaq_3: IdM3,
                P1M1: ch1,      P1M2: ch2,    P1M3: ch3, 
                P2M1: ch4,      P2M2: ch5,    P2M3: ch6, 
                P3M1: ch7,      P3M2: ch8,    P3M3: ch9,
                P4M1: ch10,     P4M2: ch11,   P4M3: ch12, 
                P5M1: ch13,     P5M2: ch14,   P5M3: ch15, 
                Descrip1: descrip1, Descrip2: descrip2, Descrip3: descrip3,
                HeRevisado: '', FechaRevisado: ''
            }
            $.ajax({
                type: 'Post',
                url: "/Turnos/GrabaTurnos",
                dataType: 'json',
                data: JSON.stringify(datos),
                success: function (data) {
                    toastr["success"]("Datos Grabados", "Atención")
                    toastr.options = {          "closeButton": true,                 "debug": false,             "newestOnTop": false,
                        "progressBar": false,   "positionClass": "toast-top-center", "preventDuplicates": false, "onclick": null,
                        "showDuration": "350",  "hideDuration": "1000",              "timeOut": "5000",          "extendedTimeOut": "1000",
                        "showEasing": "swing",  "hideEasing": "linear",              "showMethod": "fadeIn",     "hideMethod": "fadeOut"
                    }
                    window.location.reload(true);
                    window.location.href = "Home/Index/";
                },
                error: function (data) {
                    toastr["error"]("Usuario Invalido", "Error")
                    toastr.options = {
                        "closeButton": false,                 "debug": false,             "newestOnTop": false,      "progressBar": false,
                        "positionClass": "toast-top-center",  "preventDuplicates": false, "onclick": null,           "showDuration": "200",
                        "hideDuration": "1000",               "timeOut": "5000",          "extendedTimeOut": "1000", "showEasing": "swing",
                        "hideEasing": "linear",               "showMethod": "fadeIn",     "hideMethod": "fadeOut"
                    }
                }
            })
        });

    el cual va al siguiente controller:

    [HttpPost]
            public ActionResult GrabaTurnos(Control_Turno Ctr_Tur)
            {
                using (ControlTurnos = new DrillcoCambTurEntities())
                {
                    var GrbTurno = ControlTurnos.Sp_Ins_Control_Turno(

                      Ctr_Tur.IdOper,     Ctr_Tur.Fecha_Uso, Ctr_Tur.IdTurno,
                      Ctr_Tur.IdMaq_1,    Ctr_Tur.IdMaq_2,    Ctr_Tur.IdMaq_3,
                      Ctr_Tur.P1M1,       Ctr_Tur.P1M2,       Ctr_Tur.P1M3,
                      Ctr_Tur.P2M1,       Ctr_Tur.P2M2,       Ctr_Tur.P2M3,
                      Ctr_Tur.P3M1,       Ctr_Tur.P3M2,       Ctr_Tur.P3M3,
                      Ctr_Tur.P4M1,       Ctr_Tur.P4M2,       Ctr_Tur.P4M3,
                      Ctr_Tur.P5M1,       Ctr_Tur.P5M2,       Ctr_Tur.P5M3,
                      Ctr_Tur.Descrip1,   Ctr_Tur.Descrip2,   Ctr_Tur.Descrip3,
                      Ctr_Tur.HeRevisado, Ctr_Tur.FechaRevisado

                      );
                    return View(GrbTurno);
                }

           }

    Mi problema, es que al llegar acá (al controller) y comprobar , el Ctr_Tur , esta vació, estoy usando en el script las mismas variables de paso, pero aun así no pasan los datos, no se cual es el error.


    miércoles, 11 de noviembre de 2020 19:59

Respuestas

Todas las respuestas

  • Hola,

     

    gracias por confirmar que encontraste una respuesta a tu pregunta.

     

    Saludos cordiales

     

    Gabriel Castro


    jueves, 12 de noviembre de 2020 0:51
  • Típicamente cuando sucede esto, es decir, cuando al controller te llega null a pesar de que le estás enviando datos, lo que suele ocurrir es que la estructura de los datos que le estás mandando no concuerda con la estructura de la clase que has declarado como parámetro del controller. Por ejemplo, un error típico es pasarle un objeto (es decir, empieza por llave) cuando lo que esperaba es una lista de objetos (es decir, empieza por corchete), o viceversa. Pero también puede ser alguna otra diferencia dentro del objeto en cuestión.

    Sugiero que uses la F12 en el navegador para capturar el POST que le está enviando al controller, y entonces examina cuidadosamente el objeto que está transmitiendo y compáralo con la definición de tu clase Control_Turno, a ver dónde difieren.

    jueves, 12 de noviembre de 2020 7:28
  • Saludos

    La cantidad de elementos, concuerda entre el javascript y el controller, al usar una estructura de envio diferente :

    $.ajax({
                type: 'Post',
                data: {
                    IdOper: $("#CodUsu").val(),
                    Fecha_Uso: $("#FechTurno").val(),
                    IdTurno: $("#Turnos").val(),
                    IdMaq_1: IdM1,
                    IdMaq_2: IdM2,
                    IdMaq_3: IdM3,
                    P1M1: ch1,
                    P1M2: ch2,
                    P1M3: ch3,
                    P2M1: ch4,
                    P2M2: ch5,
                    P2M3: ch6,
                    P3M1: ch7,
                    P3M2: ch8,
                    P3M3: ch9,
                    P4M1: ch10,
                    P4M2: ch11,
                    P4M3: ch12,
                    P5M1: ch13,
                    P5M2: ch14,
                    P5M3: ch15,
                    Descrip1: descrip1,
                    Descrip2: descrip2,
                    Descrip3: descrip3,
                    HeRevisado: '',
                    FechaRevisado: ''
                },
                dataType: 'json',
                url: "/Turnos/GrabaTurnos",

    pasa lo mismo, al hacerle un seguimiento a traves de f12, muestra lo siguiente:

    jueves, 12 de noviembre de 2020 12:13
  • Problema Resuelto, graciass
    • Marcado como respuesta Rodrigo Menares jueves, 12 de noviembre de 2020 13:59
    jueves, 12 de noviembre de 2020 13:59