开发者

Enterprise Library Validation Block - Validate conditioned to another property value

开发者 https://www.devze.com 2023-01-17 00:21 出处:网络
I need to validate two fields only if a third field has a specific value. In this code snipper i suppose to use a CheckIf开发者_C百科 properties that not exist.

I need to validate two fields only if a third field has a specific value. In this code snipper i suppose to use a CheckIf开发者_C百科 properties that not exist. It is possible to validate a field only if another property hase a specifica value ?

public string CustomerType { get; set; } // P=Private B=Business

[NotNullValidator(MessageTemplate = "You must specify the property 'Name'", CheckIf = "CustomerType=='P'")]
public string PrivateName { get; set; }

[NotNullValidator(MessageTemplate = "You must specify the property 'Name'", CheckIf = "CustomerType=='B'")]
public string BusinessName { get; set; }

Thank you!!!


From a validation perspective I agree with Siva that you can use SelfValidation for this. When looking at your code however, from an OO perspective, I can't help noticing that it might be good to take a good look at your design. It seems that either you are showing us two sub types of Customer, namely PrivateCustomer and BusinessCustomer:

class Customer
{
}

class PrivateCustomer : Customer
{
    public string PrivateName { get; set; }
}

class BusinessCustomer : Customer
{
    public string BusinessName { get; set; }
}

Or... those two properties are actually the same thing. Your validation messages even calls them 'Name' in both cases. In that case, you'll end up with this design:

class Customer : Customer
{
    public string CustomerType { get; set; }

    public string Name { get; set; }
}
0

精彩评论

暂无评论...
验证码 换一张
取 消