У меня есть контроллер учетной записи, который имеет:
- LoginForm (получить действие)
- Вход (после действия)
- RegisterForm (получить действие)
- Регистрация (последующее действие)
В индексном действии другого контроллера я использую их как:
- Html.RenderAction ("RegistrationForm", "Acount");
- Html.RenderAction ("LoginForm", "Acount");
Все работает нормально, и я могу зарегистрировать нового пользователя, войти в систему и проверить с ненавязчивой проверкой.
Проблема в том, когда выполняется некоторая внутренняя проверка в действии «Регистрация / Вход», и если есть ошибка, я не знаю, как передать ошибку, которая будет отображена.
Я пробовал с шаблоном PRGи это работает нормально.Я получаю ошибку, отображаемую в форме с сохраненными данными, но PRG не способ сделать это.
Что является альтернативным решением этой проблемы без использования ajax для проверки или перемещения этих методов в контроллере, гдеиспользуются регистрационные формы / регистрационные формы?
Я хочу пропустить использование TempData из-за использования сеанса в фоновом режиме.
РЕДАКТИРОВАТЬ ОБРАЗЕЦ КОДА:
class AccountController : SomeBaseController{
[HttpGet]
public PartialViewResult RegistrationForm()
{
return PartialView(new RegisterUser());
}
[HttpPost]
public ActionResult RegisterUser(RegisterUser user)
{
if (ModelState.IsValid)
{
var _user;// create domain user from Register user Model;
var _validationOutput = _userService.DoSomeAwsomeServerSideValidation(_user);// do some custom validation
if (_validationOutput.IsFault)
{
// we preseve tempdata in base controller OnActionExecuted
_validationOutput.ErrorMessages.ForEach(x => ModelState.AddModelError(_validationOutput.ErrorCode, _validationOutput));
// redirect to home controller custom error occured
return RedirectToAction("Index", "Home", user);
}
return RedirectToAction("RegistrationInfo");
}
return RedirectToAction("SomeUserInfoAction");
}
}
class HomeController : SomeBaseController {
Index(){
return View();
}}
HomeControllerMarkup {
@{Html.RenderAction("RegistrationForm", "Acount");}
@{Html.RenderAction("LoginForm", "Acount");}
}