使用RequiredAttribute将类属性/类设为必需

时间:2018-11-09 12:58:03

标签: c# .net validation data-annotations

我的问题类似于this的问题。

class WorkFlowData
{
      [Required]
      public InputData Data{ get; set; }

      public String Whatever { get; set; }
}

class GenericWorkFlowData
{
      public InputData Data{ get; set; }

      public String Whatever { get; set; }
}

class InputData
{
      public int ObjectID { get; set; }

      public string Name { get; set; }
}

我想要实现所需的属性ObjectID。

但是,我想在类级别而不是属性级别使用RequiredAttribute。验证应考虑类InputData的属性ObjectID。

正如您在上面看到的那样,并不总是应该验证ObjectID或根据需要设置它,这取决于调用InputData的类,是否应该进行验证。

1 个答案:

答案 0 :(得分:1)

如果需要编程验证,请实现IValidatableObject。

 public class Blog : IValidatableObject
 {
     public int Id { get; set; }
     [Required]
     public string Title { get; set; }
     public string BloggerName { get; set; }
     public DateTime DateCreated { get; set; }
     public virtual ICollection<Post> Posts { get; set; }

     public IEnumerable<ValidationResult> Validate(ValidationContext validationContext)
     {
         if (Title == BloggerName)
         {
             yield return new ValidationResult
              ("Blog Title cannot match Blogger Name", new[] { "Title", “BloggerName” });
         }
     }
 }

来自MSDN的代码:https://docs.microsoft.com/en-us/ef/ef6/saving/validation