1

如果您不能将相同的数据注释两次应用于一个属性,如下所示:

[RequiredIf("Country", "Canada", "Postal Code is Required") ]
[RequiredIf("Country", "France", "Postal Code is Required") ]
public string PostalCode { get; set; }

您将如何检查多个国家/地区是否需要邮政编码?

4

1 回答 1

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,因为它将验证与模型本身分开,并且总体上使验证更容易。

于 2013-02-22T22:49:15.450 回答