假设我有一个在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
答案 0 :(得分:16)
是的,使用TryValidateObject
上Validator
类的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.
}