2010-09-20 85 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