我的问题类似于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的类,是否应该进行验证。
答案 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