為web程式實現**的功能一直是一項長久不衰的話題。
實現的方法無外乎用模版引擎解析**的模版生成頁面。
模版引擎也是多種多樣,千奇百怪。
不過我覺得mvc自帶的razor配合visual studio在體驗上是最爽的模版引擎。
mvc的view解析其實就是一種模版解析行為,那麼我們是否可以利用mvc的view解析實現程式的換膚功能呢?這樣就不需要在另做模版解析的工作。
下面就簡單實現乙個換膚的例子。
先實現乙個普通的mvc程式,然後再修改成帶**切換的mvc程式。
新建乙個空的mvc3專案。
實現homecontroller下的indexaction ,並提供一些資料。
public actionresult index()
;viewbag.news = news;
return view();}}
新建indexaction的view,並顯示action提供的資料。
<
h1>
@viewbag.title
h1>
<
ul>
@foreach (string str in viewbag.news)
ul>
專案的結構
專案執行結果:
到此乙個普通的mvc程式就完了,下面我們再實現換膚功能。
修改_viewstart.cshtml 檔案如下。
@在view目錄下新建乙個skins目錄,用於存放**檔案。
在skins目錄下新建兩個**目錄,綠衣盎然,紅妝素裹。並把原view目錄下除web.config外的檔案所有檔案分別複製到這兩個目錄下。
然後分別為兩套**的_layout.cshtml,加上不同的樣式。
紅妝素裹 _layout.cshtml
綠意盎然 _layout.cshtml
此時執行專案肯定是報錯的,提示找不到視**件。
下面我們就通過修改view的搜尋路徑,實現模版的切換。
修改global.asax檔案。
protected
綠衣盎然
");//
修改**名換膚
}public
static
void regskin(string skinname)
/.cshtml","
~/views/skins/
"+skinname+"
//.vbhtml","
~/views/skins/
"+skinname+"
//shared/.cshtml","
~/views/skins/
"+skinname+"
//shared/.vbhtml","
~/views//.cshtml","
~/views//.vbhtml","
~/views/shared/.cshtml","
~/views/shared/.vbhtml"};
}至此換膚功能已經完成。
PHP實現MVC開發得最簡單的方法 單點入口
很早前就想寫一些關於php實現mvc的新的體會。今天就開始詳細的寫寫我對mvc的一些理解,以及我在開發過程中實現自己的乙個框架的乙個流程。其中或許說的不正確,還望指正!m是指model。controller 並不參與業務邏輯,整個業務邏輯部分應該是放在 model 層中的。controller 只起...
最簡單的方法實現遞迴
方法一 取出第一條 var first allmenulist.where e e.parentid 0 tolist foreach遞迴 allmenulist.foreach e e.childrenitem allmenulist.where a a.parentid e.id tolist ...
守護程序的最簡單實現方法
include include include void createdaemon void else if pid 0 exit 0 父程序退出 setsid 建立新的會話組 if chdir 0 改變程序工作目錄 close 0 if open dev null o rdwr 0 0號檔案描述符...