2010-09-20 37 views
0

仅当第三个字段具有特定值时,才需要验证两个字段。 在这个代码snipper我想使用不存在的CheckIf属性。 仅当其他属性具有特定值时才可以验证字段?企业库验证块 - 将条件验证为另一个属性值

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; } 

谢谢!

回答

1

从验证的角度来看,我同意Siva的意见,您可以使用SelfValidation来达到此目的。但是,从OO的角度来看,当您查看您的代码时,我不禁注意到仔细查看您的设计可能是件好事。看来,要么你向我们展示两个子类型的Customer,即PrivateCustomerBusinessCustomer

class Customer 
{ 
} 

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

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

或者......这两个性质实际上是一回事。在两种情况下,您的验证消息甚至称它们为“名称”。在这种情况下,您将以此设计结束:

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

    public string Name { get; set; } 
} 
+0

我的情况与第二种情况类似。当客户类型为“B”= Business时,“私人名称”必须是法定的名称,“公司名称”是公司的名称。我已经使用SefValidation,但我认为为了代码的可读性,将验证与属性值相关联的属性将会很有用。谢谢! – 2010-09-21 13:17:15