1

ModelState我对MVC3 中的验证错误消息有疑问。我在我的注册视图@Html.ValidationSummary(false)中显示了DataAnnotations来自我的模型对象的错误消息。然后.. 在我的注册动作控制器中,我有ModelState.IsValid,但在里面if(ModelState.IsValid)我有另一个错误控件,它添加到模型状态,ModelState.AddModelError(string.Empty, "error...")然后我做了一个RedirectToAction,但是添加的消息ModelState根本不显示。

为什么会这样?

4

1 回答 1

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");
}
于 2011-12-30T18:57:27.227 回答