在ASP.NET MVC中使用属性或设置类

时间:2013-09-07 04:59:16

标签: c# asp.net-mvc

我有一个包含Address字段的Customer类。根据我的研究,我可以使用属性:

public class Customer{
   //...
   [Required]
   public Address CustomerAddress { get; set; }
} 

或其他方式:

public class AddressSettings{
   public bool AddressRequired { get; set; }
   //...other settings
}

两种方式都是有效的方法吗?如果没有,为什么另一种方式更好?

2 个答案:

答案 0 :(得分:2)

在我看来,使用属性更好,更专业,使用属性更具可读性,更灵活,更易于管理,并且具有许多开箱即用的功能

答案 1 :(得分:1)

对于基本验证,您最好使用DataAnnotations。

另一种选择是FluentValidation(我强烈推荐)

您可以拥有一个单独的类进行验证,但仍然与您的viewmodel属性具有强类型关联

[Validator(typeof(PersonValidator))]
public class Person {
    public int Id { get; set; }
    public string Name { get; set; }
    public string Email { get; set; }
    public int Age { get; set; }
}

public class PersonValidator : AbstractValidator<Person> {
    public PersonValidator() {
        RuleFor(x => x.Id).NotNull();
        RuleFor(x => x.Name).Length(0, 10);
        RuleFor(x => x.Email).EmailAddress();
        RuleFor(x => x.Age).InclusiveBetween(18, 60);
    }
}

使用这种方法,您可以拥有更复杂和丰富的验证逻辑。