none
¿Como recargar Jquery de una vista general desde una partialview en MVC 4? RRS feed

  • Pregunta

  • Hola a todos amigos.

    Actualmente estoy desarrollando una aplicación web con MVC 4, con lo cual estoy manejando vistas parciales con métodos, el problema es que una vez que ya se guardo el registro retorno la partial view de editar en el mismo div pero las funciones de Jquery ya no me funcionan en esta partial view porque solo ligan los campos cuando carga por primera vez la pagina principal, por ello quiero saber si hay alguna forma de recargar solo el section script ya que los campos se llaman igual, me podrían ayudar con algún ejemplo.

    Saludos.

    miércoles, 15 de noviembre de 2017 18:05

Respuestas

  • ya lo solucione por consejo de un amigo lo único que hice es meter el binding en una función y llamarla después de cargar la partial view en la success function.

     function OnSuccessDomicilio(response) {
                    $('#domicilio_lab').html(response);
                    bindingDropdown();
                }

     $(document).ready(function () {
                bindingDropdown();            
            });

            function bindingDropdown()
            {           
                $('#estado_id').change(function () {
                    $('#municipio_id').empty();
                    $('#localidad_id').empty();
                    $.ajax({
                        type: "post",
                        url: '@Url.Action("GetMunicipios","DomicilioLaboral")',
                        data: { estado_id: $('#estado_id').val() },
                        datatype: "json",
                        traditional: true,
                        success: function (data) {
                            var cont = Object.keys(data).length;
                            for (var x = 0; x < cont; x++) {
                                $('#municipio_id').append('<option value="' + data[x].Value + '">' + data[x].Text + '</option>');
                            }
                        }
                    });
                });

                $('#municipio_id').change(function () {
                    $('#localidad_id').empty();
                    $.ajax({
                        type: "post",
                        url: '@Url.Action("GetLocalidad", "DomicilioLaboral")',
                        data: { estado_id: $('#estado_id').val(), municipio_id: $('#municipio_id').val() },
                        datatype: "json",
                        traditional: true,
                        success: function (data) {
                            var cont = Object.keys(data).length;
                            for (var x = 0; x < cont; x++) {
                                $('#localidad_id').append('<option value="' + data[x].Value + '">' + data[x].Text + '</option>');
                            }
                        }
                    });
                });

            }

    muchas Gracias por todo.

    miércoles, 15 de noviembre de 2017 19:54

Todas las respuestas

  • hola

    el tema es que por ajax de jquery no deberias pedir la partialview, sino que deberias pedir un model serializado a json y asignar los datos de la view que basicamente es simple html

     Showing Data Using jQuery Ajax Call JSON In ASP.NET MVC

    descarta lo del entity framework, pero si valida como se devuelve un json Result del model serializado y se asigna al html

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    miércoles, 15 de noviembre de 2017 18:48
  • >>pero las funciones de Jquery ya no me funcionan en esta partial view porque solo ligan los campos cuando carga por primera vez

    validaste que no uses GET para invocar los action? porque recuerda que este implementa cache

    intenta usando POST

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    miércoles, 15 de noviembre de 2017 18:49
  • De hecho todo lo envío a través de post, sin embargo lo que requiero es un dropdownlist en cascada en el edit y en el create, lo cual al cargar el create si lo toma y los liga pero al cambiar la vista parcial de create a edit ya no funcionan por que el script ya creo las ligas a los campos, sin embargo si es necesario que lo envíe por un partialview no se si allá alguna forma de poner scripts en el partialview y que estos funcionen o alguna forma de cargar una vista a través de el controller sin que me cargue todo el menú y sea asíncrona.

    Saludos.

    miércoles, 15 de noviembre de 2017 19:12
  • ya lo solucione por consejo de un amigo lo único que hice es meter el binding en una función y llamarla después de cargar la partial view en la success function.

     function OnSuccessDomicilio(response) {
                    $('#domicilio_lab').html(response);
                    bindingDropdown();
                }

     $(document).ready(function () {
                bindingDropdown();            
            });

            function bindingDropdown()
            {           
                $('#estado_id').change(function () {
                    $('#municipio_id').empty();
                    $('#localidad_id').empty();
                    $.ajax({
                        type: "post",
                        url: '@Url.Action("GetMunicipios","DomicilioLaboral")',
                        data: { estado_id: $('#estado_id').val() },
                        datatype: "json",
                        traditional: true,
                        success: function (data) {
                            var cont = Object.keys(data).length;
                            for (var x = 0; x < cont; x++) {
                                $('#municipio_id').append('<option value="' + data[x].Value + '">' + data[x].Text + '</option>');
                            }
                        }
                    });
                });

                $('#municipio_id').change(function () {
                    $('#localidad_id').empty();
                    $.ajax({
                        type: "post",
                        url: '@Url.Action("GetLocalidad", "DomicilioLaboral")',
                        data: { estado_id: $('#estado_id').val(), municipio_id: $('#municipio_id').val() },
                        datatype: "json",
                        traditional: true,
                        success: function (data) {
                            var cont = Object.keys(data).length;
                            for (var x = 0; x < cont; x++) {
                                $('#localidad_id').append('<option value="' + data[x].Value + '">' + data[x].Text + '</option>');
                            }
                        }
                    });
                });

            }

    muchas Gracias por todo.

    miércoles, 15 de noviembre de 2017 19:54