Estou usando o Ajax.BeginForm para criar um formulário que fará um postback de ajax para uma determinada ação do controlador e, se a ação for bem-sucedida, o usuário deve ser redirecionado para outra página (se a ação falhar, uma mensagem de status será exibida usando o AjaxOptions UpdateTargetId).
using (Ajax.BeginForm("Delete", null,
new { userId = Model.UserId },
new AjaxOptions { UpdateTargetId = "UserForm", LoadingElementId = "DeletingDiv" },
new { name = "DeleteForm", id = "DeleteForm" }))
{
[HTML DELETE BUTTON]
}
Se a exclusão for bem-sucedida, estou retornando um resultado de Redirecionamento:
[Authorize]
public ActionResult Delete(Int32 UserId)
{
UserRepository.DeleteUser(UserId);
return Redirect(Url.Action("Index", "Home"));
}
Mas a visualização Índice do Home Controller está sendo carregada no UpdateTargetId e, portanto, acabo com uma página dentro de uma página. Duas coisas que estou pensando:
- Ou eu estou arquitetando isso de forma errada e devo lidar com esse tipo de ação de forma diferente (sem usar ajax).
- Em vez de retornar um resultado de Redirecionamento, retorne um modo de exibição que contém javascript que faz o redirecionamento no lado do cliente.
Alguém tem comentários sobre o nº 1? Ou se o nº 2 for uma boa solução, como seria a "visualização de redirecionamento de javascript"?