Asp.net mvc 3 如何在ASP.NET MVC 3控制器中执行错误处理?
我有一名账户控制员,该控制员具有:Asp.net mvc 3 如何在ASP.NET MVC 3控制器中执行错误处理?,asp.net-mvc-3,post-redirect-get,Asp.net Mvc 3,Post Redirect Get,我有一名账户控制员,该控制员具有: LoginForm(获取操作) 登录(操作后) 注册执行(获取操作) 登记册(行动后) 在另一个控制器的索引操作中,我将它们用作渲染: Html.RenderAction(“注册表单”、“账户”) RenderAction(“LoginForm”、“Acount”) 一切正常,我可以注册一个新用户,登录和验证与不引人注目的验证 问题在于何时在Register/Login操作中执行一些后端验证,如果出现错误,我不知道如何传输要呈现的错误 我试过PRG模式
- LoginForm(获取操作)
- 登录(操作后)
- 注册执行(获取操作)
- 登记册(行动后)
- Html.RenderAction(“注册表单”、“账户”)李>
- RenderAction(“LoginForm”、“Acount”)李>
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");
}
}
您可以使用以下方法在post控制器内手动将错误添加到
ModelState
:
ModelState.AddModelError("", @"You didn't perform task XYZ");
然后,您应该能够返回视图并在验证摘要中显示错误:
@Html.ValidationSummary(false, "Login was unsuccessful because...")
您所说的是显示已输入信息的验证错误,还是显示需要在单独的错误页面上显示的错误消息?我问的原因是你说PRG不是实现它的方式?我们可以查看控制器的操作以更好地理解这一点吗?这不是一种方法,因为PRG是阻止x form post的,这里不是这种情况。我这样做,但问题是我无法返回承载RegisterPerform和LoginForm的视图,因为它位于另一个控制器中。如果我重定向到action,那么我必须prg并使用我不想使用的tempview。
@Html.ValidationSummary(false, "Login was unsuccessful because...")