如果您不能将相同的数据注释两次应用于一个属性,如下所示:
[RequiredIf("Country", "Canada", "Postal Code is Required") ]
[RequiredIf("Country", "France", "Postal Code is Required") ]
public string PostalCode { get; set; }
您将如何检查多个国家/地区是否需要邮政编码?
如果您不能将相同的数据注释两次应用于一个属性,如下所示:
[RequiredIf("Country", "Canada", "Postal Code is Required") ]
[RequiredIf("Country", "France", "Postal Code is Required") ]
public string PostalCode { get; set; }
您将如何检查多个国家/地区是否需要邮政编码?
您可以为此编写自己的自定义验证器并将其放置在您的模型之上,而不是属性之上。像这样的东西又快又脏?这样做的方式。
// 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,因为它将验证与模型本身分开,并且总体上使验证更容易。