Estoy usando Ajax.BeginForm para crear un formulario que hará una devolución de datos ajax a una determinada acción del controlador y luego, si la acción es exitosa, el usuario debe ser redirigido a otra página (si la acción falla, se muestra un mensaje de estado usando el UpdateTargetId de AjaxOptions).
using (Ajax.BeginForm("Delete", null,
new { userId = Model.UserId },
new AjaxOptions { UpdateTargetId = "UserForm", LoadingElementId = "DeletingDiv" },
new { name = "DeleteForm", id = "DeleteForm" }))
{
[HTML DELETE BUTTON]
}
Si la eliminación es exitosa, estoy devolviendo un resultado de redireccionamiento:
[Authorize]
public ActionResult Delete(Int32 UserId)
{
UserRepository.DeleteUser(UserId);
return Redirect(Url.Action("Index", "Home"));
}
Pero la vista del índice del controlador de inicio se está cargando en UpdateTargetId y, por lo tanto, termino con una página dentro de una página. Dos cosas en las que estoy pensando:
- O estoy diseñando esto mal y debería manejar este tipo de acción de manera diferente (sin usar ajax).
- En lugar de devolver un resultado de redireccionamiento, devuelva una vista que contenga javascript que realiza el redireccionamiento en el lado del cliente.
¿Alguien tiene comentarios sobre el n. ° 1? O si el n. ° 2 es una buena solución, ¿cómo se vería la "vista de redirección de JavaScript"?