2011-11-09 33 views
1

爲了尊重視圖模型模式,我重構了我的代碼。我也使用了AutoMapper。現在,我有一個與'Required'和'DisplayName'註解相關的問題。最初我在模型上設置了這些註釋。我認爲這是最好的地方。但現在我對我的視圖使用viewModel我想知道視圖基於視圖模型(而不是模型實體)時未檢測到數據註釋

我是否必須將'DisplayName'和'Required'註釋從我的模型移動到我的視圖模型類?

我注意到我的模型上的註釋在我的視圖(現在基於視圖模型)中不再被檢測到。

感謝您的幫助。

回答

0

是的,事實上,註釋是觀察模型的原因之一,因爲那樣你就不必用註解來污染你的域類,而這些類只在特定的視圖中才有意義。

在一個地方擁有所有東西都很誘人,真的很乾,但是域模型可能對你的觀點中的任何事情都不感興趣。這不是他的責任。這是之間的共同鬥爭中不要重複自己單一職責,你必須要找到他們之間的甜蜜點:)

+0

@ rich.okelly:謝謝大家,你幫了我不少。 – Bronzato

1

簡短的回答,是的。

將反射用於您的模型類型(在視圖中聲明)以找出需要爲其各自的標記提供哪些屬性。

+0

Bartosz:好的,如果我有3種基於用戶信息的不同視圖,我會複製一些'Required'註釋,對吧?韋爾總是告訴「不要複製東西」,但是在這種情況下,我們別無選擇? – Bronzato

+0

如果它們是公共屬性,則可以使用這些屬性和屬性創建一個基類並對它們進行子類化。但是,如果您要求完全相同的信息,則視圖可以共享相同的視圖模型類型。 MVVM模式的要點是將您的視圖從您的域模型中分離出來,它不一定需要每個視圖都有一個視圖模型。 –

+1

好吧,無論幹什麼('不要重複自己'),還有'單一責任'的事情。帶有視圖註釋的域模型是DRY,但打破SR。始終由你來找到甜蜜點:) – Bartosz

相關問題