none
Actualizar Datos de mi Vista después de usar @Ajax.ActionLink RRS feed

  • Pregunta

  • Saludos de nuevo,

    Estoy usando "@Ajax.ActionLink" para enviar el valor de un id  a mi controlador y con ese "id" buscar en una lista, para eliminar dicho registro.  

    Esta es la tabla que muestro en mi vista:

    id nombre Edad  
    323 Jua 12 eliminar
    234 Marcos 13 eliminar
    121 Sebastian 14 eliminar

    la tabla está dentro de un ForEach que barre un ViewBag con data que obtengo desde mi controlador. Ahora bien al dar click en  "Eliminar" , me borra ese registro de mi Lista. Todo funciona bien cuando hago seguimiento al código poniendo breakPoints, si se elimina el registro de la lista y el Viewbag se actualiza quitando el registro que elimine. Pero en el navegador ya no me pinta los cambios, siguen las mismas filas en la tabla.

    gracias de antemano.

    martes, 24 de julio de 2018 22:46

Respuestas

  • hola

    >>si se elimina el registro de la lista y el Viewbag se actualiza quitando el registro que elimine. Pero en el navegador ya no me pinta los cambios, siguen las mismas filas en la tabla.

    estas realizando una llamada ajax, no se actualiza la pagina aunque actualices el ViewBag

    ASP.NET MVC AJAX Helper

    fijate como se usa el OnSuccess

    ya quee ste debes asignar con codigo javascript que aplique la logica que elimine la row que se selecciono

    pero creo que ese action deberia retornar json y no un viewmodel

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    • Marcado como respuesta Anthonyvtt jueves, 26 de julio de 2018 1:58
    miércoles, 25 de julio de 2018 15:35

Todas las respuestas

  • hola

    >>si se elimina el registro de la lista y el Viewbag se actualiza quitando el registro que elimine. Pero en el navegador ya no me pinta los cambios, siguen las mismas filas en la tabla.

    estas realizando una llamada ajax, no se actualiza la pagina aunque actualices el ViewBag

    ASP.NET MVC AJAX Helper

    fijate como se usa el OnSuccess

    ya quee ste debes asignar con codigo javascript que aplique la logica que elimine la row que se selecciono

    pero creo que ese action deberia retornar json y no un viewmodel

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    • Marcado como respuesta Anthonyvtt jueves, 26 de julio de 2018 1:58
    miércoles, 25 de julio de 2018 15:35
  • Hola Leandro gracias por la respuesta, la verdad soy algo nuevo en asp.net MVC, pero siempre es bueno aprender algo nuevo, con tu comentario pude aclarar ciertas dudas que tenia y resolví el problema que tenía.

    Por si más adelante alguien tiene el mismo problema detallaré como lo solucioné:

    En mi vista el botón eliminar que en realidad es la imagen de una "X" de color rojo, la puse así:

     @Ajax.ActionLink("Registro", "Index", new { id = @item.Codigo }, new AjaxOptions { HttpMethod = "POST", OnSuccess= "deleteRow("+@item.Codigo+")", InsertionMode = InsertionMode.Replace }, new { @class = "imagenBoton" })

     Cabe mencionar que el botón está dentro de un ForEach que lo que hace es barrer mi ViewBag por eso el "@item.Codigo"

    Bien ahora en la misma Vista uso código JavaScrip para eliminar la Fila de mi tabla que contenga ese código:

    <script type="text/javascript">
        function deleteRow(rowid) {
            var row = document.getElementById(rowid);
            row.parentNode.removeChild(row);
        }

    </script>

    Algo importante es que cuando Recorro el ViewBag con el forEach para generar mi tabla dinámicamente le asigno a cada fila que se va generando(TR) un id= @item.Codigo, de esta forma al clickear el link "eliminar" le paso el código a la función javascript "deleteRow" y listo elimino la fila donde se clickeo para eliminar.

    La duda que me quedo es ¿Por qué debería retornar un Json y no un Viewmodel?.

    saludos.

    ---------------------------------------------------------

    Anthony.

    jueves, 26 de julio de 2018 1:58