Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 使用RequiredAttribute使类属性/类成为必需_C#_.net_Validation_Data Annotations - Fatal编程技术网

C# 使用RequiredAttribute使类属性/类成为必需

C# 使用RequiredAttribute使类属性/类成为必需,c#,.net,validation,data-annotations,C#,.net,Validation,Data Annotations,我的问题类似于一个 我希望实现需要的属性ObjectID 但是,我希望在类级别而不是属性级别使用RequiredAttribute。验证应考虑类输入数据的属性Obj.< /P> 正如您在上面所看到的,并不总是应该验证ObjectID或根据需要设置它,这取决于调用的是哪个类InputData,是否应该进行验证。如果需要编程验证,请实现IValidatableObject public class Blog : IValidatableObject { public int Id {

我的问题类似于一个

我希望实现需要的属性ObjectID

但是,我希望在类级别而不是属性级别使用RequiredAttribute。验证应考虑类输入数据的属性Obj.< /P>
正如您在上面所看到的,并不总是应该验证ObjectID或根据需要设置它,这取决于调用的是哪个类InputData,是否应该进行验证。

如果需要编程验证,请实现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” });
         }
     }
 }
公共类博客:IValidatableObject
{
公共int Id{get;set;}
[必需]
公共字符串标题{get;set;}
公共字符串名称{get;set;}
public DateTime DateCreated{get;set;}
公共虚拟ICollection Posts{get;set;}
公共IEnumerable验证(ValidationContext ValidationContext)
{
如果(标题==博客名)
{
返回新的ValidationResult
(“博客标题不能与博主姓名匹配”,新[]{“标题”,“博主姓名”});
}
}
}

MSDN中的代码:

内置类型(如int)不需要有required。此类型不可为null。这些类将用于jquery非干扰性验证。例如,用户可能正在使用应定义objectID的WorkFlowData,或者用户可能正在使用不应定义的GenericWorkFlowData。默认情况下,objectID是必需的。我不确定是否可以在班级级别使用所需的。但是,您可以根据需要创建自定义属性。如果使用验证,Jquery unobtrusive由“data-”调用,因此不需要做太多,但即使在这里,如果您希望某种形式的定制,也可以使用。是的,似乎我无法在类级别使用。我只是想知道是否有人可以做类似的smth之前,并有一个提示。谢谢
 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” });
         }
     }
 }