如果用户通过身份验证,我想将他带到“主页”页面,但使用包含用户配置文件的模型,否则,我想回发包含模型错误的同一页面。这是我所做的:
[HttpPost]
[AllowAnonymous]
public ActionResult Index(Login loginViewModel)
{
if (ModelState.IsValid)
{
IUserProfile userProfile = ValidateUser(loginViewModel);
if (userProfile != null)
{
FormsAuthentication.RedirectFromLoginPage(loginViewModel.UserName, loginViewModel.RememberMe);
// return View(userProfile); This obviously won't work
}
else
{
ModelState.AddModelError("InvalidCredentials", "Invalid password. Please try again.");
}
}
return View();
}
问题是,我如何将视图模型(IUserProfile
)传递给Home/Index.cshtml
视图,因为我没有明确地将他重定向到主页;它是通过FormsAuthentication.RedirectFromLoginPage
方法完成的。
我也不能在调用View(userProfileViewModel)
后调用返回,FormsAuthentication.RedirectFromLoginPage
因为如果这样做,按照惯例,它将尝试使用控制器Index
上的名称创建视图,并尝试将视图模型传递给它,这是错误的,将导致一个例外。Login
UserProfile