在ASP.NET MVC中來實現(xiàn)主題的切換一般有兩種方式,一種是通過切換皮膚的css和js引用,一種就是通過重寫視圖引擎。通過重寫視圖引擎的方式更加靈活,因為我不僅可以在不同主題下面布局和樣式不一樣,還可以讓不同的主題下面顯示的數(shù)據(jù)條目不一致,就是說可以在某些主題下面添加一下個性化的東西。

    本篇我將通過重寫視圖引擎的方式來進行演示,在這之前,我假設你已經(jīng)具備了MVC的一些基礎,系統(tǒng)登錄后是默認主題,當我們點擊切換主題之后,左側(cè)菜單欄的布局變了,右側(cè)內(nèi)容的樣式也變了,而地址欄是不變的。界面UI用的metronic,雖然官網(wǎng)是收費的,但是在天朝,總是可以找到免費的。官方地址:http://keenthemes.com/preview/metronic/

    我們先來看下效果:

電腦培訓,計算機培訓,平面設計培訓,網(wǎng)頁設計培訓,美工培訓,Web培訓,Web前端開發(fā)培訓

電腦培訓,計算機培訓,平面設計培訓,網(wǎng)頁設計培訓,美工培訓,Web培訓,Web前端開發(fā)培訓

    在這里,我使用了分區(qū)域、分模塊(按獨立的業(yè)務功能劃分)的方式,一個模塊就是一個獨立的dll,在這里Secom.Emx.Admin和Secom.Emx.History就是兩個獨立的模塊,并分別創(chuàng)建了區(qū)域Admin和History。

 電腦培訓,計算機培訓,平面設計培訓,網(wǎng)頁設計培訓,美工培訓,Web培訓,Web前端開發(fā)培訓電腦培訓,計算機培訓,平面設計培訓,網(wǎng)頁設計培訓,美工培訓,Web培訓,Web前端開發(fā)培訓

    你會發(fā)現(xiàn)Secom.Emx.Admin模型下面的Areas目錄和Secom.Emx.WebApp中的目錄是一模一樣的,其實我最初不想在模塊項目中添加任何的View,但是為了方便獨立部署還是加了。右鍵單擊項目Secom.Emx.Admin,選擇“屬性”——“生成事件”添加如下代碼:

xcopy /e/r/y $(ProjectDir)Areas\Admin\Views $(SolutionDir)Secom.Emx.WebApp\Areas\Admin\Views

    這命令很簡單,其實就是當編譯項目Secom.Emx.Admin的時候,將項目中的Views復制到Secom.Emx.WebApp項目的指定目錄下。

電腦培訓,計算機培訓,平面設計培訓,網(wǎng)頁設計培訓,美工培訓,Web培訓,Web前端開發(fā)培訓

    區(qū)域配置文件我放置到了Secom.Emx.WebApp中,其實你完全可以獨立放置到一個類庫項目中,因為注冊區(qū)域路由的后,項目最終會尋找bin目錄下面所有繼承了AreaRegistration類的,然后讓Web