首页 > Web开发 > 详细

搭建EF6.0+MVC4搭建框架——之路由配置

时间:2015-09-29 16:26:52      阅读:283      评论:0      收藏:0      [点我收藏+]

为了适应项目需求,需要将前后台的程序分开,便于修改和维护:

方案一:在原有的Controller下新增Admins文件夹用于放置后台控制器文件:

控制器文件目录如下图:

技术分享

 

视图文件目录:

技术分享

修改项目App_Start文件夹下的RouteConfig.cs文件的RegisterRoutes方法:

新增

 routes.MapRoute(
                name: "Admins", // 路由名称,这个只要保证在路由集合中唯一即可
                url: "Admins/{controller}/{action}/{id}",//路由规则,匹配以Admin开头的url
                defaults: new { controller = "Admin", action = "Index", id = UrlParameter.Optional }
                // new string[] { "ClassificationLabDecisionWebApp.Controllers.PreClassification" }
            );

修改后的RegisterRoutes方法:

 1     public static void RegisterRoutes(RouteCollection routes)
 2         {
 3             routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
 4 
 5            
 6             routes.MapRoute(
 7                 name: "Admins", // 路由名称,这个只要保证在路由集合中唯一即可
 8                 url: "Admins/{controller}/{action}/{id}",//路由规则,匹配以Admin开头的url
 9                 defaults: new { controller = "Admin", action = "Index", id = UrlParameter.Optional }// 默认Admin控制器
10                 // new string[] { "ClassificationLabDecisionWebApp.Controllers.PreClassification" }
11             );
12 
13             routes.MapRoute(
14                name: "Default",
15                url: "{controller}/{action}/{id}",
16                defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
17            );
18 
19 
20         }

此时运行程序,当前台页面跳转后台页面时会报找不到视图的错误,这是由于所建立的视图在没有在视图引擎上注册:

在项目App_Start文件夹下新增类文件MyViewEngine.cs 代码如下:

 1 using System;
 2 using System.Collections.Generic;
 3 using System.Linq;
 4 using System.Web;
 5 using System.Web.Mvc;
 6 
 7 namespace XYBK_Application.App_Start
 8 {
 9     public sealed class MyViewEngine : RazorViewEngine
10     {
11 
12         public MyViewEngine()
13         {
14             ViewLocationFormats = new[]
15             {
16                 "~/Views/{1}/{0}.cshtml",
17                 "~/Views/Shared/{0}.cshtml",
18                 "~/Views/Admins/{1}/{0}.cshtml",//自定义视图路径引擎
19             };
20             base.PartialViewLocationFormats = base.ViewLocationFormats;
21         }
22         public override ViewEngineResult FindView(ControllerContext controllerContext, string viewName, string masterName, bool useCache)
23         {
24             return base.FindView(controllerContext, viewName, masterName, useCache);
25         }
26 
27     }
28 }

修改Global.asax文件:

新增注册方法:

 protected void RegisterView()
        {
            ViewEngines.Engines.Clear();
            ViewEngines.Engines.Add(new MyViewEngine());
        }

并将方法RegisterView()放到Application_Start()方法中调用:

 1 protected void Application_Start()
 2         {
 3             AreaRegistration.RegisterAllAreas();
 4 
 5             WebApiConfig.Register(GlobalConfiguration.Configuration);
 6             FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
 7             RouteConfig.RegisterRoutes(RouteTable.Routes);
 8             RegisterView();//注册视图引擎
 9             BundleConfig.RegisterBundles(BundleTable.Bundles);
10         }

 

方案二:待补充。。。

 

搭建EF6.0+MVC4搭建框架——之路由配置

原文:http://www.cnblogs.com/xiaoerlang90/p/4846547.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!