У меня есть контроллер счета, которые имеют:Как выполнить обработку ошибок в контроллере ASP.NET MVC 3?
- LoginForm (получить действие)
- Войти (после действия)
- RegisterForm (получить действие)
- Регистрация (запись действия)
В другом указателе контроллера i используйте их как:
- Html.RenderAction («RegistrationForm», «Acount»);
- Html.RenderAction («LoginForm», «Acount»);
Все работает нормально, и я могу зарегистрировать нового пользователя, логин и подтверждение с ненавязчивой проверкой.
Проблема заключается в том, что делать некоторые внутренние проверки в действии Register/Login, и если есть ошибка, я не знаю, как передать полученную ошибку.
Я пробовал с шаблоном PRG, и он работает нормально. Я получаю сообщение об ошибке в форме с сохраненными данными, но PRG - это не способ сделать это.
Что такое альтернативное решение этой проблемы без использования ajax для проверки или перемещения этих методов в контроллере, где используются форматы RegistrationForm/LoginForms?
Я хочу пропустить использование TempData из-за использования сеанса в фоновом режиме.
EDIT КОД ОБРАЗЦА:
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");}
}
Вы говорите о отображении ошибки проверки для введенной информации или это сообщение об ошибке, которое должно отображаться на отдельной странице ошибок? Причина, по которой я спрашиваю, вы говорите, что PRG - это не к ней? Можем ли мы увидеть действия вашего контроллера, чтобы понять это лучше? – Dangerous
Невозможно сделать это, так как PRG - это предотвратить сообщение о форме x, которое здесь не так. –