Principales respuestas
Actualizar Datos de mi Vista después de usar @Ajax.ActionLink

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.
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
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
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
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
-
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.