2009-09-09 58 views
0

我正在開發一個ASP.NET MVC應用程序,其中可以從數據庫中提取任何頁面的內容(如果存在)並顯示在頁面上。將內容訪問邏輯放入BaseController是一個好主意嗎?

這是爲了讓非技術人員能夠編輯內容而不必進入源代碼(例如視圖)並改變內容。

我這樣做的方式是,每個控制器派生自一個基礎控制器。基礎控制器重載'OnActionExecuted',並藉此機會提取分配給當前操作/控制器的任何內容。

如果該操作返回一個派生自'ContentViewModel'的ViewModel,它將使用數據庫中的文本填充ViewModel的'Text'屬性。

然後文本被視圖渲染。

你能看到這個設計的任何弱點嗎?

如果不是有一個基礎控制器,我有HtmlHelper擴展來提取內容,我從視圖調用它會更好嗎?

我問這個的一個原因是,擁有我自己的基礎控制器似乎會干擾調用'Html.RenderAction',這似乎期望指定的控制器直接從'System.Web.Mvc.Controller'繼承。

回答

1
  1. ActionFilters不應該用來拉內容。

  2. 不應該使用控制器來提取內容,而只是通過應用簡單的邏輯來分派傳入的請求。

  3. 不應該使用HTML助手來提取任何內容。它們旨在呈現預先填充了所提供數據的UI元素。

應用程序,其中任何頁面中的內容可以從數據庫

這基本上是大多數應用程序是如何運作的拉動。

這是爲了讓非技術人員能夠編輯內容而不必進入源代碼(例如視圖)並改變內容。

對於非技術人員編輯內容應該有一個適當的用戶界面。獨立於技術基礎的項目,非技術人員不應該編輯代碼。

我建議你不要做任何奇怪的事情,但要保持清楚。實現你的業務層,將數據提供給視圖將呈現的模型。爲其他人創建一個UI來編輯內容。

相關問題