首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >基于MetadataType的ASP.Net C#验证模型

基于MetadataType的ASP.Net C#验证模型
EN

Stack Overflow用户
提问于 2011-04-03 11:37:52
回答 1查看 4.6K关注 0票数 1

我的团队正在使用MetadataType中的模型验证来构建ViewModels。我的问题是,我正在使用一个非MVC项目,我可以用它来验证模型吗?若有,可否举出例子?

代码语言:javascript
复制
[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; }
 }

提前谢谢你!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-04-03 12:31:13

我不认为这是做事情的好方法。一般来说,使用元数据类是一种设计味道。我最近打开了Fluent Validation for .NET,它看起来非常有前途,可以插入到MVC中,但不需要MVC。

话虽如此,但它是可行的:

代码语言:javascript
复制
        var person = new Person(); 
        var controllerSlashValidator = new FakeControllerValidator();
        ModelStateDictionary modelStateDictionary;
        bool isValid = controllerSlashValidator.Validate(person,out modelStateDictionary);

这段代码需要下面的FakeControllerValidator

代码语言:javascript
复制
    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;
        }
    }
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5527411

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档