2011-03-29 50 views
0

我有一個有點複雜的數據結構的ViewModel。我需要我的觀點來呈現不同的諧音,根據元素在我的視圖模型的類型,有點像這樣:是否可以創建一個豐富的ViewModel,其中僅包含創建視圖所需的信息?

[Validator(typeof(ViewModelValidator))] 
class ViewModel { 
    IEnumerable<Element> Elements; 
} 
class Element { 
    string DisplayName; 
    DisplayType DisplayType; // TextBox, Select, Radiobutton, Checkbox 
    IEnumerable<ElementValue> Values; // could be a list of values for the dropdown 
    int Group; 
    etc... 
} 
class ElementValue { 
    ... 
} 

我需要這個結構來建立我的觀點是動態輸入的元素。當我提交表單時,我正在考慮發送表單/值的json表示形式,並讓ValueProvider(可能是JsonValueProvider?)將值重新映射到我的ViewModel。我只需要用戶添加數據,所以我可以讀取數據或映射到一個新的對象,但假設我使用FluentValidation (http://fluentvalidation.codeplex.com/wikipage?title=mvc),那麼我會鬆散服務器端驗證權利?

所以我想我的問題是:我應該映射到我的ViewModel,即使我缺乏關於元素的所有信息(除了輸入的值)或者我應該只映射到一些對象,我可以驗證然後找到其他方式來顯示客戶端的錯誤?

回答

0

我不知道這是否是正確的方式,但我一直認爲View Models不應該很複雜。當它變得複雜時,我們可能會使用View Model View模式,但是爲了使用它。

我通常創建視圖模型非常特定的視圖,但只有足夠的屬性,我需要「回讀」,並需要進一步處理(作出決定)。這也包括隱藏的字段。並且由於使用DataAnnotations驗證和映射添加了驗證,因此MVC框架可以節省時間。 所有數據僅查看Grid等元素,我發送爲Json。

問候,

+0

這將是這樣做的一種方式......人力資源管理方面的問題是,我需要通過MVC生成的輸入字段(它增加了驗證的東西),但我想的東西一樣的值下拉菜單可以通過一些Ajax填充... – 2011-03-29 15:10:29

相關問題