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;
        }
    }
}

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());
        }
    }

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" }
            );
        }
    }

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" }
            );
        }
    }
}

5. 修改 ZRT.Admin项目 Views目录下 _ViewStart.cshtml 文件里的布局路径

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

6. 修改 ZRT.Admin项目的输出路径

附DEMO源码

最新文章

  1. 【设计模式】单例模式 c++实现
  2. Eclipse '/RemoteSystemsTempFiles'错误
  3. cPage分页源码,分享给大家,可作参考
  4. easyui tree onloadsuccess事件的心得
  5. [转]通过Mesos、Docker和Go,使用300行代码创建一个分布式系统
  6. 拖拽碰撞效果,高级浏览器下全部搞定(ie6-8还没有搞定)
  7. microsoft
  8. mfc分个窗口,设置分割条不可移动
  9. HDU 1908 Double Queue(set)
  10. bzoj 2588 Count on a tree
  11. ubuntu 使用sudo apt-get update 出现 被配置多次导致无法升级错误解决方法
  12. Hadoop系列001-大数据概论
  13. java百度云推送
  14. LOJ-10092(最大半连通子图)
  15. 字符串的查找KMP
  16. 洛谷P1399 快餐店
  17. Django查询SQL语句
  18. Editplus php
  19. SQL触发器实例(上)
  20. Linux dkpg命令

热门文章

  1. 利用oxygen编辑并生成xml文件,并使用JAVA的JAXB技术完成xml的解析
  2. light oj 1027 A Dangerous Maze
  3. 写一个jq插件
  4. javascript每日一练—运动
  5. vb listview 的常用操作
  6. Linux 二进制包安装MySQL的一些问题
  7. 不显示BOM清单的版本
  8. java实现二维码生成的几个方法
  9. 柯南君:看大数据时代下的IT架构(7)消息队列之RabbitMQ--案例(routing 起航)
  10. thanks使用注意事项;