条件验证RequiredIf多个类型所需的字段

时间:2013-02-22 22:38:15

标签: c# asp.net-mvc entity-framework ef-code-first

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

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

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

1 个答案:

答案 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,因为它会将验证与模型本身分开,并使验证更加容易。