愛(ai)上MVC~在Views的(de)多級文(wen)件夾~續~分部頁的(de)支(zhi)持
之前寫的一篇文章,主要(yao)針對(dui)(dui)(dui)View視(shi)圖(tu),它可以放在N級目(mu)錄(lu)下(xia),不必須非要(yao)在views/controller/action這種關系了,而在程序運行過(guo)程中,發現(xian)分(fen)頁視(shi)圖(tu)對(dui)(dui)(dui)本功能(neng)并不支持,原因很(hen)簡單(dan),在RazorViewEngine有(you)不同的(de)屬(shu)于來修飾這兩個東西,對(dui)(dui)(dui)于View的(de)查找,通(tong)過(guo)ViewLocationFormats來定義,而分(fen)部視(shi)圖(tu)的(de)查找通(tong)過(guo)PartialViewLocationFormats來定義,它們定義了視(shi)圖(tu)的(de)查詢范圍(wei),如~/Views/LindAdmin/{1}/{0}.cshtml就(jiu)可以表示(shi)在Views下(xia)面(mian)的(de)LindAdmin下(xia)的(de)目(mu)錄(lu)。
對于分部頁的多級目錄結構
/// <summary> /// 后臺(tai)路由 /// </summary> public class admin_routing : RazorViewEngine { public admin_routing() { //視圖位置 ViewLocationFormats = new[] { "~/Views/{1}/{0}.cshtml", "~/Views/LindAdmin/{1}/{0}.cshtml"//自定(ding)義汽車銷售的(de)試圖 }; //分部(bu)視(shi)圖位置 PartialViewLocationFormats = new[] { "~/Views/{1}/{0}.cshtml", "~/Views/LindAdmin/{1}/{0}.cshtml"//自定義汽車銷(xiao)售的試圖 }; } public override ViewEngineResult FindView(ControllerContext controllerContext, string viewName, string masterName, bool useCache) { return base.FindView(controllerContext, viewName, masterName, useCache); } public override ViewEngineResult FindPartialView(ControllerContext controllerContext, string partialViewName, bool useCache) { return base.FindPartialView(controllerContext, partialViewName, useCache); } }
我們(men)通過上面的代碼看到了FindView和(he)FindPartialView兩(liang)個(ge)(ge)方(fang)法(fa),它們(men)就(jiu)是在渲染視圖時的查找方(fang)法(fa),即你的action要去渲染哪(na)個(ge)(ge)視圖,我們(men)可以把自(zi)己的邏輯(ji)重(zhong)寫在這兩(liang)個(ge)(ge)
方法里!
看(kan)一下大家(jia)的(de)(de)通用(yong)后臺(tai)項目(mu),將后臺(tai)的(de)(de)一些(xie)View都放到了LindAdmin里(li),而這也是為了打包考慮的(de)(de),以后哪個具體的(de)(de)項目(mu)希望用(yong)后臺(tai),直(zhi)接NUGET安裝即可,邊頁面都不用(yong)做了,哈哈!