Ho una casella di login nella mia MasterPage. Ogni volta che le informazioni di accesso non sono corrette, valuto ViewData["loginError"]
per mostrare il messaggio di errore all'utente.ASP.NET MVC: return Redirect e ViewData
Login è un'azione di UserController, quindi il modulo che contiene il login ha action = "/User/Login"
.
Come un utente può provare ad accedere da qualsiasi pagina, in caso di successo lo reindirizzamento alla sua pagina personale, ma in caso di errore voglio che rimanga sulla stessa pagina in cui ha tentato l'accesso. Ho trovato che questo funziona:
return Redirect(Request.UrlReferrer.ToString());
ma sembra che, come io non sto ritornando una vista corretta, i dati sul Viewdata è perso, quindi non posso mostrare il messaggio di errore.
Qualche suggerimento su come risolvere questo e problemi simili?
Grazie
+1 Proprio quello che stavo pensando. C'è anche una serie di pratici filtri azione in MvcContrib che copia ModelState da e verso TempState in modo da avere le informazioni sulla convalida disponibili dopo il reindirizzamento. Vedere l'articolo 13 in questo articolo per un esempio http://weblogs.asp.net/rashid/archive/2009/04/01/asp-net-mvc-best-practices-part-1.aspx –
Ricordare che TempData utilizza la sessione stato però - con tutte le implicazioni. – UpTheCreek