ASP.NET:MVC模板化機制

剛哥521發表於2015-04-12

模版化的核心是定製ViewEngine。完整的模板化必須實現3個功能:1.網站的多套模版(razor)支援 2.模版的多樣式(style)支援。 3.按需實現模版:沒有實現的載入預設模版。 我們除了要達到上述3個功能目標,還必須不能影響MVC預設的專案目錄和檔案佈局以及開放工具的智慧提示,這樣才是真正可用的。依慣例,喜歡自己研究的直接看Nop的原始碼,喜歡直接看核心程式碼和演示Demo繼續。

基礎準備

1.新建一個空白ASP.NET應用程式,新增MVC引用。新增必要的Content、Scripts、Views/Shared目錄和_ViewStart.cshtml和_Layout.cshtml檔案。

2.新增Themes目錄用於存放不同模版,每個模版一個目錄,目錄中的結構除沒有Controllers、Models等目錄外,其他同網站根目錄一樣佈局,按需按需新增Content、Views等資料夾等。

3.新增Blog目錄,在Views中重寫Index.cshtml,Content中設定了不同的樣式。

4.新增Cms目錄,只在Content中設定了不同的樣式。

1.新增ThemeManager檔案用於配置模版和樣式。

實際使用中,提供換膚預覽時我們可以使用cookie和url引數配合。否則,將配置儲存到資料庫後其他儲存中,通過修改配置切換模版和樣式。為了便於演示這裡只使用url引數來改變首頁的模版和樣式。

2.新增ThemeViewEngine檔案。

根據ThemeManager中獲取到的配置嘗試載入模版檔案,如果檔案不存在,則載入預設模版檔案。

3.在Global.ascx中配置ThemeViewEngine。

演示:

1.預設模版+預設樣式

2.預設模版+其他樣式

3.Blog模版+Blog預設樣式

4.Blog模版+Blog其他樣式

5.預設模版+Cms預設樣式

6.預設模版+Cms其他樣式

 

 

點選此處下載本文的示例程式碼

相關文章