2011-03-02 246 views
0

我有一個有條件的業務邏輯,確定是否應該在視圖中顯示模型的屬性。根據最佳實踐哪裏將是實施它的地方?MVC3 - 條件視圖呈現

在視圖級別實現此邏輯對我來說似乎不正確。

謝謝

+0

問題用「條件視圖渲染」定義了答案,意思是條件應該在視圖渲染的某個位置。:) –

+0

視圖內的邏輯意味着一個複雜的視圖,沒有測試能力,每個視圖必須實現它的重複邏輯。 – Ninjago

回答

0

IMO,它屬於模型。我會將該業務邏輯放入模型中的IsRequiredYourProperyName屬性中。

+0

您能舉個例子嗎? – Ninjago

0

真的嗎?如果你傳遞布爾值來指示它是否應該作爲ViewModel的一部分顯示,我會認爲在視圖中沒問題。該視圖不應該查詢外部資源以查看是否應呈現某些UI元素,但如果需要確定呈現內容的所有內容在ViewModel中,那麼簡單的if語句有什麼問題?或者,如果一個條件顯示屬性是常見的,你可以創建一個自定義的DisplayTemplate或EditorTemplate,併爲其實現邏輯。

所以你的ViewModel應該包裝你想發送到視圖的所有東西。在你的情況下,它聽起來像它應該包裝你的DomainModel和某種類型的字典或KeyValuePair集合,詳細說明每個屬性是應該顯示還是不顯示爲布爾值。無論如何,這就是我會做的。