2012-01-02 48 views
2

我有一個屬性的類,它有一個範圍屬性。範圍驗證 - 使規則有例外

 [Required] 
     [Range(5, 9999)] 
     public double Price { get; set; } 

這是在任何時候,對任何用戶輸入的尊重。

但是在一個特定的代碼路徑中,我將某些條目自動化,我希望能夠將Price設置爲0.所以我想以編程方式告訴這個模型類忽略這個要求。

可能嗎?如果是這樣如何?

+0

你應該使用雙似乎是貨幣價值? – Lloyd 2012-01-02 05:49:32

+0

好問題...你通常使用什麼?在sql server和.net? – MoXplod 2012-01-03 08:25:47

+0

Decimal http://msdn.microsoft.com/en-us/library/ms187746.aspx – Lloyd 2012-01-03 08:30:43

回答

0

這看起來像是this question的副本,但也許我並不完全瞭解您的要求。

對於您的情況,我可能會嘗試實現IValidatableObject接口,以便您可以控制驗證邏輯而不是使用聲明性驗證模式。

+0

我在許多情況下不使用視圖。有時候,這些模型會使用API​​或Windows服務等來調用。 – MoXplod 2012-01-02 05:50:50

0

我建議你創建派生類型System.ComponentModel.DataAnnotations.ValidationAttribute。該實現可以類似於具有額外值的附加參數的RangeAttribute類。

查看this MSDN article瞭解有關如何操作的詳細信息。