如果您不能将相同的数据注释两次应用于一个属性,如下所示:
[RequiredIf("Country", "Canada", "Postal Code is Required") ]
[RequiredIf("Country", "France", "Postal Code is Required") ]
public string PostalCode { get; set; }
您如何检查多个国家/地区是否需要邮政编码?
答案 0 :(得分:2)
您可以为此编写自己的自定义验证器,并将其放在模型的顶部,而不是属性。像这样的东西是快速的?脏?这样做的方式。
// Not guaranteed to work since I work only with FluentValidation for past year
public class PostalCodeValidator : ValidationAttribute
{
public override bool IsValid(object value)
{
var address = (Address)value;
if ((address.Country == "Canada" || address.Country == "France") && address.PostalCode == null)
{
return false;
}
return true;
}
}
我强烈建议您在下一个项目中学习和使用FluentValidation,因为它会将验证与模型本身分开,并使验证更加容易。