ASP.NET MVC 項目分離


ASP.NET MVC 項目分離

說明:

ZRT.Web 是前台網站,目錄【D:\ZRT.Web\】

ZRT.Admin 是后台管理,目錄【D:\ZRT.Web\Applications\Admin\】,刪除文件【Global.asax】

 

 

1. 繼承 RazorViewEngine,重寫路徑模板

namespace ZRT.Web.Framework
{
     public  class CustomerRazorViewEngine : RazorViewEngine
    {
         public CustomerRazorViewEngine()
        {
            AreaViewLocationFormats =  new[]
                                          {
                                               // default
                                               " ~/Applications/{2}/Views/{1}/{0}.cshtml "
                                               " ~/Applications/{2}/Views/Shared/{0}.cshtml "
                                          };

            AreaMasterLocationFormats =  new[]
                                            {
                                                 // default
                                                 " ~/Applications/{2}/Views/{1}/{0}.cshtml "
                                                 " ~/Applications/{2}/Views/Shared/{0}.cshtml "
                                            };

            ViewLocationFormats =  new[]
                                      {
                                             // default
                                             " ~/Views/{1}/{0}.cshtml "
                                             " ~/Views/Shared/{0}.cshtml "
                                      };

            MasterLocationFormats =  new[]
                                        {
                                             // default
                                             " ~/Views/{1}/{0}.cshtml "
                                             " ~/Views/Shared/{0}.cshtml "
                                        };

            AreaPartialViewLocationFormats = AreaViewLocationFormats;
            PartialViewLocationFormats = ViewLocationFormats;
        }
    }
}
View Code

2. 在ZRT.Web的 Global.asax 文件里 設置試圖引擎

public  class MvcApplication : System.Web.HttpApplication
    {
         protected  void Application_Start()
        {
            AreaRegistration.RegisterAllAreas();

            WebApiConfig.Register(GlobalConfiguration.Configuration);
            FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
            RouteConfig.RegisterRoutes(RouteTable.Routes);
            BundleConfig.RegisterBundles(BundleTable.Bundles);

            ViewEngines.Engines.Clear();
            ViewEngines.Engines.Add( new CustomerRazorViewEngine());
        }
    }
View Code

3. 修改默認網站的路由,添加命名空間

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 },
                namespaces:  new[] {  " ZRT.Web.Controllers " }
            );
        }
    }
View Code

4. 注冊區域,在ZRT.Admin項目里添加一個類,AdminAreaRegistration 繼承 AreaRegistration

namespace ZRT.Admin
{
     public  class AdminAreaRegistration : AreaRegistration
    {
         public  override  string AreaName
        {
             get
            {
                 return  " Admin ";
            }
        }

         public  override  void RegisterArea(AreaRegistrationContext context)
        {
            context.MapRoute(
                 " Admin_default ",
                 " Admin/{controller}/{action}/{id} ",
                 new { controller =  " Home ", action =  " Index ", area =  " Admin ", id =  "" },
                 new[] {  " ZRT.Admin.Controllers " }
            );
        }
    }
}
View Code

5. 修改 ZRT.Admin項目 Views目錄下 _ViewStart.cshtml 文件里的布局路徑

@{
    Layout =  " ~/Applications/Admin/Views/Shared/_Layout.cshtml ";
}
View Code

6. 修改 ZRT.Admin項目的輸出路徑

 

 

附DEMO源碼


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM