2011-03-15 268 views
1

我正在使用asp.net mvc 2在這裏,我有一個以下類申請人,它的屬性 提到[必需],所以如果我在申請人強類型的項目中添加一個新的視圖類和只使用申請人類Html.TextBoxFor(Model => Model.Property1)中的一個屬性,當我使用Model.IsValid時,它返回False,因爲我沒有使用其他所需屬性(property2,property3,property4)的提供值。 那麼有沒有什麼方法可以使用相同的申請人類別針對不同的視圖,並且還只驗證那些我在視圖中使用過的屬性,而不是那些沒有使用過的視圖。關於asp.net MVC驗證

class Applicant{ 

[Required] 
propert1{get,set;} 
[Required] 
propert2{get,set;} 
[Required] 
propert3{get,set;} 
[Required] 
propert4{get,set;} 

} 
+0

爲視圖創建相應的視圖模型不是更容易嗎?你試圖保持它太乾,導致違反單一責任原則。 – 2011-03-15 11:39:41

+0

@ user460293 DRY代表不要重複自己。在你的案例中 - 視圖模型提供多個視圖,但是創建多個視圖會更容易。 – 2011-03-15 11:42:51

回答

1

所以有任何方法用於使用同一申請人類對於不同的視圖,並且還驗證只有那些i的視圖已經使用不是那些沒有在視圖中使用屬性。

我建議你爲每個視圖創建視圖模型,並驗證屬性是否適合每個視圖的需要。

+0

謝謝好的我會這樣做,但我們可以做我要求的嗎?我認爲這顯然是NO – user460293 2011-03-15 12:41:36

+0

@ user460293,不,你不能這樣做,因爲數據註釋驗證屬性在編譯時被烘焙,並且您不能根據正在執行的操作來動態修改/刪除其中的某些屬性。而且這將是糟糕的設計。 – 2011-03-15 12:43:14