是否可以在控制器之外获得ModelState.IsValid功能?

时间:2013-06-11 14:47:41

标签: c# asp.net-mvc

假设我有一个在MVC应用程序中使用[Required]字段等注释的模型。

在控制器中调用ModelState.IsValid很有效,但是我说我不在控制器中,并希望在模型上的应用程序的其他地方运行类似的检查。有可能以某种方式调用此功能吗?

class MyModel{
   [Required]
   public string Name{get;set;}
}

// Code elsewhere in app that isn't the controller
MyModel model = new MyModel();
//Can I run a modelstate.isvalid type check here on model?  Would return false if Name wasn't set

1 个答案:

答案 0 :(得分:16)

是的,使用TryValidateObjectValidator类的System.ComponentModel.DataAnnotations方法。

var results = new List<ValidationResult>();
var context = new ValidationContext(model, null, null);
if (!Validator.TryValidateObject(model, context, results))
{
    // results will contain all the failed validation errors.
}