无法在视图中访问ModelState错误

时间:2012-06-24 18:44:01

标签: c# .net html asp.net-mvc-3 razor

所以我在Razor视图中访问模型错误时遇到了一些麻烦。

在我的控制器中,当ModelState无效或某些其他自定义验证未通过时,我会添加如下模型错误:ModelState.AddModelError("ModelState", "Please fill out all required fields.");

然后我返回一个像这样的重定向:

return RedirectToAction("Register", "Account");

看起来相当简单,但是,当我尝试访问模型状态错误,循环遍历它们,并将它们作为单独的span添加到我的视图中时,我什么都得不到显示。这是视图中的代码:

@foreach (var error in ViewData.ModelState.Values.SelectMany(modelState => modelState.Errors))
{
    <span>@error.ErrorMessage</span>
    <br />
}

我在这里做错了什么,或者不做我应该做的事情?

1 个答案:

答案 0 :(得分:2)

您不应该重定向到操作,只需返回相同的视图:

///
/// Displays form to edit model
///
public ActionResult Edit(int id)
{
    MyModelClass m = new MyModelClass();
    return View(m);
}

[HttpPost]
public ActionResult Edit(MyModelClass m)
{

    if( !ModelState.IsValid )
    {
        // Got error, return view
        return View(m);
    }
    return RedirectToAction("/mymodel/success");
}

已更新:ModelState.IsValid - 错误输入:)