我的团队正在使用MetadataType中的模型验证来构建ViewModels。我的问题是,我正在使用一个非MVC项目,我可以用它来验证模型吗?若有,可否举出例子?
[MetadataType(typeof(PersonMetadata))]
public class Person
{
public int ID { get; set; }
public string Name { get; set; }
}
public class PersonMetadata
{
[StringLength(255, ErrorMessage="Name is required"), Required]
[DisplayName("Name")]
public string Name { get; set; }
}提前谢谢你!
发布于 2011-04-03 12:31:13
我不认为这是做事情的好方法。一般来说,使用元数据类是一种设计味道。我最近打开了Fluent Validation for .NET,它看起来非常有前途,可以插入到MVC中,但不需要MVC。
话虽如此,但它是可行的:
var person = new Person();
var controllerSlashValidator = new FakeControllerValidator();
ModelStateDictionary modelStateDictionary;
bool isValid = controllerSlashValidator.Validate(person,out modelStateDictionary);这段代码需要下面的FakeControllerValidator
public class FakeControllerValidator: Controller
{
public FakeControllerValidator()
{
this.ControllerContext = new ControllerContext(new RequestContext(new HttpContextWrapper(System.Web.HttpContext.Current),new RouteData()),this);
}
public bool Validate(object model, out ModelStateDictionary modelStateDictionary)
{
bool isValid = TryValidateModel(model);
modelStateDictionary = ModelState;
return isValid;
}
}https://stackoverflow.com/questions/5527411
复制相似问题