文章出處

回到目錄

在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地址,就可以看到想要的結果了

目錄結果如下

 

感謝各位的閱讀!

回到目錄


文章列表




Avast logo

Avast 防毒軟體已檢查此封電子郵件的病毒。
www.avast.com


arrow
arrow
    全站熱搜
    創作者介紹
    創作者 大師兄 的頭像
    大師兄

    IT工程師數位筆記本

    大師兄 發表在 痞客邦 留言(0) 人氣()