【发布时间】:2020-03-27 08:07:42
【问题描述】:
我在开发中遇到问题。
public class Student
{
public bool a{get;set;}
public string b{get;set;}
}
当 a 为真时 B 不能为空,否则 b 可以为空。我现在需要使用 Attribute 进行验证。我能做什么?
【问题讨论】:
标签: asp.net model-view-controller
我在开发中遇到问题。
public class Student
{
public bool a{get;set;}
public string b{get;set;}
}
当 a 为真时 B 不能为空,否则 b 可以为空。我现在需要使用 Attribute 进行验证。我能做什么?
【问题讨论】:
标签: asp.net model-view-controller
如果您坚持使用属性验证,那么您将不得不创建自己的自定义属性,并可能尝试通过反射访问 a 值。如果你问我,那就太复杂了……
查看this 了解如何创建自己的验证属性。
我宁愿建议你使用IValidatableObject 接口。
public class Student : IValidatableObject
{
public bool a{get;set;}
public string b{get;set;}
public IEnumerable<ValidationResult> Validate(ValidationContext validationContext)
{
if(a & string.IsNullOrEmpty(b))
yield return new ValidationResult("b is required", new[] {"b"});
}
}
Validate 方法将在验证后运行,并将ValidationResult 的消息附加到列表中包含的属性(在您的情况下为b)。
试试这个解决方案。
【讨论】: