1、新建一个项目 TestAdmin 项目类型随便选一个,待会删掉,因为这里我只需要解决方案名称 【项目存放于 F 盘 F:\TestAdmin】
2、新建一个 ZGJ.web 的前台 MVC 项目,将开始的那个随便选的项目删掉 【ZGJ.Web 地址 F:\TestAdmin\ZGJ.Web】
3、新建一个 ZGJAdmin 的后台 MVC 项目,放在 ZGJ.Web 里面 【ZGJAdmin 地址 F:\TestAdmin\ZGJ.Web\ZGJAdmin】
4、为了美观 将项目 ZGJAdmin 重命名为 ZGJ.Admin 并且在其属性中将程序集名称及默认命名空间名称一起改成 ZGJ.Admin
5、在 ZGJ.Web 下新建一个视图引擎 CustomerRazorViewEngine 继承自 RazorViewEngine
- public class CustomerRazorViewEngine : RazorViewEngine
- {
- public CustomerRazorViewEngine()
- {
- AreaViewLocationFormats = new[]
- {
- //default
- "~/ZGJAdmin/Views/{1}/{0}.cshtml",
- "~/ZGJAdmin/Views/Shared/{0}.cshtml"
- };
- AreaMasterLocationFormats = new[]
- {
- //default
- "~/ZGJAdmin/Views/{1}/{0}.cshtml",
- "~/ZGJAdmin/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;
- }
- }
6、在 ZGJ.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);
- ViewEngines.Engines.Clear();
- ViewEngines.Engines.Add(new CustomerRazorViewEngine());
- }
- }
7、修改 ZGJ.Web 中的 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[] {
- "ZGJ.Web.Controllers"
- });
- }
8、注册区域 在 ZGJ.Admin 中添加类 AdminAreaRegistration 继承自 AreaRegistration
- 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[] { "ZGJ.Admin.Controllers" }
- );
- }
- }
9、在 ZGJ.Admin 的 View 目录下 添加_ViewStart.cshtml 布局文件
- @{
- Layout = "~/ZGJAdmin/Views/Shared/_Layout.cshtml";
- }
10、在 ZGJ.Admin 的 View 目录下添加 Shared 目录 并添加_Layout.cshtml 布局文件
11、在 ZGJ.Admin 的属性中修改项目的输出目录
来源: