Sto usando Ajax.BeginForm per creare un modulo che eseguirà un postback ajax su una determinata azione del controller e quindi se l'azione ha successo, l'utente dovrebbe essere reindirizzato a un'altra pagina (se l'azione fallisce, viene visualizzato un messaggio di stato utilizzando 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 l'eliminazione ha esito positivo, restituisco un risultato di reindirizzamento:
[Authorize]
public ActionResult Delete(Int32 UserId)
{
UserRepository.DeleteUser(UserId);
return Redirect(Url.Action("Index", "Home"));
}
Ma la vista Indice dell'Home Controller viene caricata in UpdateTargetId e quindi mi ritrovo con una pagina all'interno di una pagina. Due cose a cui sto pensando:
- O sto architettando questo errore e dovrei gestire questo tipo di azione in modo diverso (non usando ajax).
- Invece di restituire un risultato di reindirizzamento, restituisci una visualizzazione che contiene javascript che esegue il reindirizzamento sul lato client.
Qualcuno ha commenti su # 1? O se la # 2 è una buona soluzione, come sarebbe la "visualizzazione javascript di reindirizzamento"?