2009-10-26 79 views
0

我已閱讀相關問題,但我找不到適合我的問題(或我只是愚蠢)的問題。如何動態編譯一個ViewUserControl(Asp.Net MVC)或Asp.Net控制

基本上我有一個工廠呈現某個「模板」,該模板包含某些「實體」。這些實體可以呈現自己並具有無效的Render方法,該方法構造HTML並將其返回給模板工廠。

現在,爲了可維護性,這是一場噩夢。如果客戶想要在html之間留出空間,dll需要重新編譯(這太可怕了!)

我需要一種方法將邏輯+ HTML從無效渲染方法移出某種控制,解析控件並在運行時返回HTML。這樣代碼可以相對保持良好。

我使用Asp.Net MVC和模板工廠是一個類庫。有什麼辦法可以做到這一點?

謝謝!

回答

1

聽起來像你想要的是每個「實體」的強類型的ViewUserControl。這基本上是我在我正在開發的一個項目中實現的小部件。每個小部件都有它自己的小部件模型和一個局部視圖(ViewUserControl),該部分視圖強制類型化爲該模型。小部件使用模型的屬性來呈現該小部件的視圖。

+0

這正是我想要完成的!謝謝!現在問題仍然存在,我該如何做到這一點。那麼工廠必須返回一個控制名稱+實例化模型列表,並且該視圖只是遍歷每個項目並呈現它們 - Html.RenderPartial(「EntityName」,EntityModel)? – 2009-10-26 14:30:14

+1

基本上我是這麼做的,雖然我把所有模型放在頁面模型的一個枚舉中,並且在我的基礎控制器上有一個方法,它使用一個工廠來爲該頁面創建所有的小部件並將它們放入這個主模型。在頁面上,我只是遍歷enumerable並讓它調用RenderPartial以及窗口小部件模型想要渲染的部分:foreach(Model.Widgets中的var小部件){Html.RenderPartial(widget.ViewName,widget.Model); } – tvanfosson 2009-10-26 14:38:41

+0

非常感謝!我會執行這個! – 2009-10-26 14:45:30