【问题标题】:Trouble accessing ModelState Errors in view无法访问视图中的 ModelState 错误
【发布时间】:2012-06-24 18:44:00
【问题描述】:

所以我在 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 />
}

我在这里做错了什么,还是没有做我应该做的事情?

【问题讨论】:

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


    【解决方案1】:

    你不应该重定向到行动,只是返回相同的观点:

    ///
    /// 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 - 输入错误:)

    【讨论】:

    • 啊,谢谢!我想当它重定向时,所有ModelState 集合都被清除了,因此它可以为另一条路线做准备。甚至没有想到这一点,但这是有道理的,现在它起作用了。谢谢!
    • 是的,这是重定向和转发的主要区别
    猜你喜欢
    • 2013-01-04
    • 2020-03-10
    • 1970-01-01
    • 1970-01-01
    • 2010-11-06
    • 1970-01-01
    • 2014-03-19
    • 2012-07-12
    • 2014-05-24
    相关资源
    最近更新 更多