模型中一组字段的数据注释验证

Data Annotation Validation for a Group of Fields in Model

我是 MVC 3 数据注释的新手,我只是想问一下是否可以在模型中的一组字段上添加验证并在 none 具有值时显示验证?

这是我的数据模型中的字段集

 public class ContactModel
    {
        public Nullable<int> Id { get; set; }


        [Display(Name = "Contact Firstname")]
        [Required(ErrorMessage = "Required!")]
        public string ContactFirstname { get; set; }

        [Display(Name = "Contact Lastname")]
        [Required(ErrorMessage = "Required!")]
        public string ContactLastname { get; set; }

        [Display(Name = "Contact Middlename")]
        public string ContactMiddlename { get; set; }

            [Display(Name = "Phone")]
            [Required(ErrorMessage = "Required!")]
            public string ContactPhone { get; set; }

            [Display(Name = "Mobile ")]
            [Required(ErrorMessage = "Required!")]
            public string ContactMobile { get; set; }

            [Display(Name = "Email")]
            [Required(ErrorMessage = "Required!")]
            public string ContactEmail { get; set; }

        [Display(Name = "Job Title")]
        [StringLength(50, ErrorMessage = "Max character reached!")]
        public string ContactJobTitle { get; set; }

    }

如果来自Phone、手机或电子邮件的验证没有价值

,我想添加验证

谢谢

您可以实现 IValidatableObject 接口并为所有必要的属性添加验证:

public IEnumerable<ValidationResult> Validate(ValidationContext validationContext)
{
    if(string.IsNullOrEmpty(Phone) || string.IsNullOrEmpty(Mobile) || string.IsNullOrEmpty(Email))
    {
         yield return new ValidationResult("Some error message");
    } 
}

当然你应该从这些属性中删除 [Required] 属性。