Tengo un cuadro de inicio de sesión en mi página maestra. Cuando la información de inicio de sesión no es correcta, valorizo ViewData["loginError"]
para mostrar el mensaje de error al usuario.ASP.NET MVC: return Redirect y ViewData
El inicio de sesión es una acción del UserController, por lo que el formulario que contiene el inicio de sesión tiene action = "/User/Login"
.
Como un usuario puede intentar iniciar sesión desde cualquier página, en caso de éxito lo redirigiré a su página personal, pero en caso de error quiero que permanezca en la misma página donde intentó iniciar sesión. He encontrado que esto funciona:
return Redirect(Request.UrlReferrer.ToString());
pero parece que, ya que no estoy devolviendo visualizar correctamente, los datos sobre ViewData se pierde, así que no puedo mostrar el mensaje de error.
¿Alguna sugerencia sobre cómo solucionar este y problemas similares?
Gracias
+1 Justo lo que estaba pensando. También hay un conjunto de filtros de acción útiles en MvcContrib que copia ModelState ay desde TempState para que tenga la información de validación disponible después de la redirección. Consulte el elemento 13 de este artículo para ver un ejemplo http://weblogs.asp.net/rashid/archive/2009/04/01/asp-net-mvc-best-practices-part-1.aspx –
Recuerde TempData usa la sesión estado sin embargo, con todas las implicaciones. – UpTheCreek