ASP.NET MVC - Как поддерживать ModelState с другого контроллера?

У меня есть HomeController с действием Index, которое показывает представление Index.aspx. Он имеет раздел для входа в систему с именем пользователя и паролем. Когда пользователь нажимает кнопку отправки, он выполняет POST-запрос к действию входа в 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.

Итак, вопрос: Как отправить пользователя к действию на другом контроллере без перенаправления?

10
задан Rap 24 December 2010 в 14:17
поделиться