2010-09-23 43 views
1

我將現有系統移植到ASP.NET MVC2。在當前的傳統應用程序中,用戶可以從數十個可用字段中進行選擇,以便爲域模型中的不同實體定製CRUD表單,類似於ERP系統允許定製核心模塊的方式。從ASP.NET MVC2控制器返回ad-hoc視圖模型

我的問題:我正在尋找一個好的模式或ASP.NET MVC2中的這種行爲的例子。在我看來,這很像是根據用戶的選擇動態地創建一個ViewModel,或者正確的方法是數據驅動的視圖頁面不是強類型的,我可以反映客戶端的結果來確定字段標題或什麼 - 如果這是有道理的:)。或者,也許我可以根據用戶選擇驅動AutoMapper或類似的動態@ runtime?

底層的領域模型是基於EF4的,我爲ViewModel使用了一個簡單的Repository pattern @ present。

TIA for any input!邁克爾

+0

澄清 - 定製CRUD表單並實際完成CRUD表單將是兩個不同的步驟? – Ahmad 2010-09-23 17:09:31

+0

嗨艾哈邁德 - 是的,這是正確的:有效的'設計時間經驗'爲最終用戶選擇表單的字段,然後有該表單的CRUD使用。正如你所說的,兩個不同的步驟。 – mcmSEA 2010-09-23 17:30:00

+0

它看起來像ASP.NET MVC3有一些有趣的ViewModel管道,我正在研究.NET4中的動態數據和Expandos - 我應該提到,我可以假設.NET4爲這個項目,我們可以考慮MVC3,儘管它現在是alpha。 – mcmSEA 2010-09-23 17:31:11

回答

2

如果我沒有發現其他任何相匹配的需求,並接着定製做到這一點,我想:

  • 使用視圖模型的所有字段/不僅僅是用戶挑選的人。
  • 同時通過視圖模型和視圖配置視圖
  • 調用一些HTML輔助,對於配置中的每個項目添加一個字段,在模型中相應的屬性
  • 的配置可爲任一部分傳遞一個包含ViewModel或ViewData中的單獨條目
  • 根據您的需要,構建/傳遞視圖配置可以放入一個Action Filter中。或者,幫手可以直接拉它。

另一種方法是如果您需要完全自定義字段。我的意思是用戶定義字段。如果是這種情況,那就不是在控制器級別輸入的,所以我會將字段/值的列表傳遞給視圖。該視圖可以對添加字段的人員進行初步探討。再次可以將其移至HtmlHelper。

+0

謝謝Eglasius。我認爲你的方法可行。現在用戶可以呈現的所有字段都是預定義的 - 他們可以更改標籤以符合他們的術語,這也像ERP系統。但是我希望避免不必要地向CRUD視圖發送大量數據 - 有很多可選字段。對於「設計時間」來說,發送所有字段聽起來像是正確的做法,可能按照您描述的方式進行。 – mcmSEA 2010-09-23 17:58:16

+0

+1正是我在想什麼,我覺得視圖配置應該是視圖數據的一個獨特元素。主要原因在於,如果用戶可以自定義最終的CRUD表單,那麼這些選擇將需要存儲,很可能在維護配置時會涉及一些其他邏輯。 – Ahmad 2010-09-23 18:28:26

+0

嗨艾哈邁德 - 是的,我們需要存儲每個用戶的視圖配置無論如何。但是,如果我採用這種方式並始終發送所有字段,它不是真正的動態或「特設」,它只是根據配置來控制可見性,對嗎? – mcmSEA 2010-09-23 18:35:36

相關問題