ユーザーが認証されている場合は、ユーザープロファイルを含むモデルを使用して「ホーム」ページに移動したいのですが、そうでない場合は、モデルエラーで同じページをポストバックしたいと考えています。これが私がやったことです:
[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