MVC中同一Area下多个路由的配置方法

场景

首先说下遇到的问题,项目中需要用到 【Area名/文件夹名/Controller/方法名】这种四级目录方式的接口调用,一般而言,都是【Area名/Controller/方法名】这种三级目录的方式,而且MVC中默认也是这种方式。


解决方案

MVC中的Area下默认的路由为:

            context.MapRoute(
                "APP_AD_default",
                "APP_AD/{controller}/{action}/{id}",
                new { area = this.AreaName, controller = "Home", action = "Index", id = UrlParameter.Optional },
                new string[] { "Web.Areas." + this.AreaName + ".Controllers" }
            );

对于一般同一Area下统一使用一个业务类型名的文件夹的方式,比较好处理,直接修改默认的路由即可。即:

            context.MapRoute(
                "APP_AD_Elev",
                "APP_AD/Elev/{controller}/{action}/{id}",
                new { area = this.AreaName, controller = "Home", action = "Index", id = UrlParameter.Optional },
                new string[] { "Web.Areas." + this.AreaName + ".Controllers.Elev" }
            );

而如果是同一Area下区分了多个不同业务类型的文件夹,那么,就需要配置多个路由:

            context.MapRoute(
                "APP_AD_Elev",
                "APP_AD/Elev/{controller}/{action}/{id}",
                new { area = this.AreaName, controller = "Home", action = "Index", id = UrlParameter.Optional },
                new string[] { "Web.Areas." + this.AreaName + ".Controllers.Elev" }
            );
            context.MapRoute(
                "APP_AD_Alarm",
                "APP_AD/Alarm/{controller}/{action}/{id}",
                new { area = this.AreaName, controller = "Home", action = "Index", id = UrlParameter.Optional },
                new string[] { "Web.Areas." + this.AreaName + ".Controllers.Alarm" }
            );
            context.MapRoute(
                "APP_AD_default",
                "APP_AD/{controller}/{action}/{id}",
                new { area = this.AreaName, controller = "Home", action = "Index", id = UrlParameter.Optional },
                new string[] { "Web.Areas." + this.AreaName + ".Controllers" }
            );

注意配置多个路由一定要注意先后顺序和命名空间,default的路由放在最后,否则其他路由配置将无效。

—— 完 ——
相关推荐
评论

立 为 非 似

中 谁 昨 此

宵 风 夜 星

。 露 , 辰

文章点击榜

细 无 轻 自

如 边 似 在

愁 丝 梦 飞

。 雨 , 花