愛上MVC~在Views的多級文件夾
在(zai)MVC里,你的控制器對應的視(shi)圖一(yi)(yi)般是(shi)(shi)在(zai)Views目錄,而如(ru)果希望在(zai)Views里再分幾個(ge)模塊(kuai)文件夾(jia)默認是(shi)(shi)不允許(xu)的,我們需要做一(yi)(yi)下設(she)置,就(jiu)可(ke)以實現Views下的多次(ci)文件夾(jia)層次(ci)了,例如(ru),我們有產品模塊(kuai),用戶模塊(kuai),訂單模塊(kuai),我們就(jiu)可(ke)以把它(ta)的文件夾(jia)結構設(she)計成如(ru)下
用戶模塊:/views/UserModel/UserCenter/Index,其中UserModel是(shi)模塊名稱(cheng),usercenter是(shi)控制器名稱(cheng),而index是(shi)action名稱(cheng)
產品模塊:/views/ProductModel/Product/Index
訂單模塊:/views/OrderModel/Order/Do
如(ru)(ru)果我們希望實現這種方式的視(shi)圖,我們需(xu)要配置(zhi)如(ru)(ru)下代碼
1 建立你的路由
/// <summary> /// 后(hou)臺路由 /// </summary> public class admin_routing : RazorViewEngine { public admin_routing() { ViewLocationFormats = new[] { "~/Views/{1}/{0}.cshtml", "~/Views/Admin/{1}/{0}.cshtml"//自定義汽車銷(xiao)售(shou)的(de)試圖 }; } public override ViewEngineResult FindView(ControllerContext controllerContext, string viewName, string masterName, bool useCache) { return base.FindView(controllerContext, viewName, masterName, useCache); } }
2 配(pei)置你的路由(you)(you),可以寫下默(mo)認路由(you)(you)的下面
public class RouteConfig { public static void RegisterRoutes(RouteCollection routes) { routes.IgnoreRoute("{resource}.axd/{*pathInfo}"); routes.MapRoute( name: "Default", url: "{controller}/{action}/{id}", defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional } ); routes.MapRoute( "Admin", // 路由名稱(cheng),這個(ge)只要保證在路由集合(he)中唯一即可 "Admin/{controller}/{action}/{id}", new { controller = "WebUser", action = "Index", id = UrlParameter.Optional } // ); } }
3在global里添加(jia)視圖引擎,并添加(jia)自定(ding)義(yi)的(de)路由
protected void RegisterView_Custom_routing() { ViewEngines.Engines.Clear(); ViewEngines.Engines.Add(new admin_routing()); }
protected void Application_Start() { AreaRegistration.RegisterAllAreas(); WebApiConfig.Register(GlobalConfiguration.Configuration); FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters); RouteConfig.RegisterRoutes(RouteTable.Routes); BundleConfig.RegisterBundles(BundleTable.Bundles); AuthConfig.RegisterAuth(); RegisterView_Custom_routing(); }
最后,運行我們(men)的(de)(de)webUser/Index地址(zhi),就可以看(kan)到想(xiang)要(yao)的(de)(de)結果了
目錄結果如下
感謝各位的閱讀!