2013-02-26 53 views
3

我移植現有的自定義CMS寫在Web表單到MVC4最好保持CMS數據庫架構和數據完整。我使用url來確定要求哪個頁面,以及使用哪個模板。模板主要用於不同的佈局和內容'字段'。如何動態地轉換加載Web表單用戶控件到MVC剃刀

以我web表單的應用程序我有一個基類PageTemplate : UserControl

我有一個的Default.aspx看起來在該請求的路徑,從DB拉它,然後使用TemplateId屬性動態加載該用戶控件,該數據庫的內容添加到屬性,然後添加到一個佔位符頁面

p = CMSPage.Select(fullPath); 
myTemplate = LoadControl("~/templates/template_" + p.TemplateId.ToString + ".ascx"); 
myTemplate.Content = p; 
phTemplate.Controls.Add(myTemplate); 

上在用戶控件Init事件中,我填充文字標記從CMS內容 - 這意味着我可以擁有服務器的控制按鈕和相互作用和仍然處理回發 - 全部封裝在usercontrol內

我有大約20個模板,最多隻能渲染,有些是互動的。我想遷移到Razor作爲視圖引擎。

1)什麼是裝載partialviews的最佳方式MVC基於動態內容,並通過了CMS內容爲模型的看法?它是否是一個單獨的CMSpage控制器,每個模板都有偏分量?或每個模板的控制器?

2)什麼是處理局部模板內的帖子最結構化的方式MVC:單CMS控制器的方法呢?每個模板的控制器?

3)僞碼歡迎!

在此先感謝

回答

0
  1. 您可以按照類似的方法,以用戶控件的方法。重定向到一個操作方法,該方法根據模板ID選擇要返回的部分視圖。操作方法可以採用部分ID並執行return PartialView("View" + templateID.ToString());。也可以使用Html.Action從視圖中動態加載部分視圖。如果您需要動態內容加載,也可以使用$ .ajax將部分視圖加載並使用JQuery流式傳輸到客戶端。
  2. 要麼限定的形式在局部視圖,或有一個接受的FormCollection(一種通用的方式來指代調回形式)一個全局局部視圖。您可以使用一些發回的ID來找出模板響應。如果可以的話,使模板中的表單可能更好,更容易配置。然而,後者會更加複雜,但如果你想要一個通用的CMS解決方案,後者是一種實現這一點的方法。

沒有一個放之四海而皆準的所有該解決方案;很難僅僅通過對產品的一瞥就提供建議。

+0

謝謝Brian。你會推薦單獨的CMS控制器中的單獨的操作方法來處理表單帖子,還是分成多個控制器? – SeanR 2013-02-26 21:29:21