以编程方式为MVC创建自定义错误

时间:2011-05-19 21:59:02

标签: .net asp.net-mvc model-view-controller

我正在使用第三方组件,我称之为传递模型对象的方法,如果发现任何错误,它将调用一个传递ValidationResult数组的回调方法。我想做的是设置这些错误,以便Html.TextBoxFor将呈现属性class =“input-validation-error”。

目前,我使用我需要的验证属性修饰我的模型类,如果Name为空,它按预期工作,并使Name输入为红色,但如果组件说它因任何原因无效,我有一个新的foreach循环,它将打印错误消息...

我想在这个回调方法中做一些事情,这将使我的视图工作就像我用验证属性装饰我的模型类一样......

这可能吗?

谢谢!

1 个答案:

答案 0 :(得分:1)

您可以在控制器内使用ModelState.AddModelError(string,string)。

// .. the model
public class MyModel { public string Property { get; set; } }

// .. in the controller
public ActionResult DoSomething(MyModel x)
{
    if(x.Property == "2")
    {
        ModelState.AddModelError("Property", "2 is not allowed");
        return View("EditorView", x);
    }
    // else....
}