回到目錄 在MVC里,你的控制器對應的視圖一般是在Views目錄,而如果希望在Views里再分幾個模塊文件夾預設是不允許的,我們需要做一下設置,就可以實現Views下的多次文件夾層次了,例如,我們有產品模塊,用戶模塊,訂單模塊,我們就可以把它的文件夾結構設計成如下 用戶模塊:/views/UserM
在MVC里,你的控制器對應的視圖一般是在Views目錄,而如果希望在Views里再分幾個模塊文件夾預設是不允許的,我們需要做一下設置,就可以實現Views下的多次文件夾層次了,例如,我們有產品模塊,用戶模塊,訂單模塊,我們就可以把它的文件夾結構設計成如下
用戶模塊:/views/UserModel/UserCenter/Index,其中UserModel是模塊名稱,usercenter是控制器名稱,而index是action名稱
產品模塊:/views/ProductModel/Product/Index
訂單模塊:/views/OrderModel/Order/Do
如果我們希望實現這種方式的視圖,我們需要配置如下代碼
1 建立你的路由
/// <summary> /// 後臺路由 /// </summary> public class admin_routing : RazorViewEngine { public admin_routing() { ViewLocationFormats = new[] { "~/Views/{1}/{0}.cshtml", "~/Views/Admin/{1}/{0}.cshtml"//自定義汽車銷售的試圖 }; } public override ViewEngineResult FindView(ControllerContext controllerContext, string viewName, string masterName, bool useCache) { return base.FindView(controllerContext, viewName, masterName, useCache); } }
2 配置你的路由,可以寫下預設路由的下麵
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", // 路由名稱,這個只要保證在路由集合中唯一即可 "Admin/{controller}/{action}/{id}", new { controller = "WebUser", action = "Index", id = UrlParameter.Optional } // ); } }
3在global里添加視圖引擎,並添加自定義的路由
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(); }
最後,運行我們的webUser/Index地址,就可以看到想要的結果了
目錄結果如下
感謝各位的閱讀!