У меня есть HomeController с действием индекса, которое показывает представление Index.aspx. Он имеет логин/пароль для входа в раздел. Когда пользователь нажимает кнопку отправки, он отправляется в действие "Вход" в AccountController.
<% Html.BeginForm("Login", "Account", FormMethod.Post); %>
В этом действии он проверяет правильность имени пользователя и пароля и, если он недействителен, отправляет пользователя обратно на страницу входа с сообщением о том, что учетные данные были плохими.
[HttpPost]
public ActionResult Login(LoginViewModel Model, string ReturnUrl)
{
User user = MembershipService.ValidateUser(Model.UserName, Model.Password);
if (user != null)
{
//Detail removed here
FormsService.SignIn(user.ToString(), Model.RememberMe);
return Redirect(ReturnUrl);
}
else
{
ModelState.AddModelError("", "The user name or password provided is incorrect.");
}
// If we got this far, something failed, redisplay form
return RedirectToAction("Index", "Home"); // <-- Here is the problem. ModelState is lost.
}
Но здесь проблема: ValidationSummary всегда пуста, потому что мы теряем модель, когда мы RedirectToAction.
Итак, вопрос: Как отправить пользователя на действие на другом контроллере без перенаправления?