我有一个示例模型类Item
。以下是描述该模型的伪代码。
public partial class Item
{
public int Total {get; set;}
public int Accepted {get;set;}
public int Rejected {get;set;}
}
我要添加一个数据注释,该注释要求:(已接受+已拒绝)<=总计。如何使用数据注释来做到这一点?我的另一种选择是在程序中验证此逻辑,但我认为这似乎是现实的数据库约束,可以通过数据注释或类似方法来实现。
我查看了诸如GreaterThan
之类的注释,这些注释使您可以比较两个属性,但是我还没有发现任何对3个属性都能正常工作的注释。我也希望避免编写自己的验证,因为它只是增加了额外的开销,而且在以前的尝试中并不是成功的方法。
让我知道是否需要澄清或进一步的代码。
答案 0 :(得分:1)
在这种情况下,您有两种解决方案。您可以按照以下方式在模型类中编写自定义验证属性或使用IValidatableObject
:
使用IValidatableObject
:
public partial class Item : IValidatableObject
{
public int Total {get; set;}
public int Accepted {get;set;}
public int Rejected {get;set;}
public IEnumerable<ValidationResult> Validate(ValidationContext validationContext)
{
List<ValidationResult> validationResults = new List<ValidationResult>();
if(Accepted + Rejected > Total)
{
validationResults.Add(new ValidationResult("The sum of Accepted and Rejected cannot greater than Total", new[] {""}));
}
return validationResults;
}
}