我对MVC3中的ModelState
和验证错误消息有疑问。
我在我的注册表中查看了@Html.ValidationSummary(false)
,它显示了我的Model对象的DataAnnotations
错误消息。然后..在我的注册表操作控制器中我有ModelState.IsValid
,但在if(ModelState.IsValid)
内部我有另一个错误控件,用ModelState.AddModelError(string.Empty, "error...")
添加到模型状态然后我执行RedirectToAction
},但ModelState
中添加的消息根本没有显示。
为什么会这样?
答案 0 :(得分:5)
然后我做一个RedirectToAction
那是你的问题。重定向模型时,状态值将丢失。添加到模型状态的值(包括错误消息)仅在当前请求的生命周期内存活。如果重定向它是一个新请求,那么模型状态就会丢失。通常的POST动作流程如下:
[HttpPost]
public ActionResult Foo(MyViewModel model)
{
if (!ModelState.IsValid)
{
// there were some validation errors => we redisplay the view
// in order to show the errors to the user so that he can fix them
return View(model);
}
// at this stage the model is valid => we can process it
// and redirect to a success action
return RedirectToAction("Success");
}