C# MVC项目不同模块同名控制器的访问

在做C#MVC项目时,有时候会根据不同的模块进行控制器编写,比如后台管理,接口调用,会用到相同的文章数据,这时候会使用同一个ArticleController的控制器名称。

这时候建议使用MVC的分区功能来做项目部署。

一开始要创建分区时,发下并没有添加分区的默认入口,这是因为区域选项被折叠到了“新搭建基架的项目”中。
解决:项目上右键“添加”-“新搭建基架的项目” =》目录结构下:通用-MVC-区域,就可以了。

根据提示新建一个Api的接口分区

这样就可以在分区里面写上接口相关的控制器了

但是,由于接口分区项目跟主项目存在相同的控制器名称,导致访问的时候会报控制器相同的报错。

这时候就要用到分区注册器的路由设置以及主项目App_start/RouteConfig.cs分别进行路由设置。

在配置的时候使用命名空间namespaces属性,分别写上同名控制器的命名空间。

如主项目的路由配置:
 

routes.MapRoute(
   "course", // 课程相关
    "course/{controller}/{action}/{id}", //路由规则,匹配以Admin开头的url
     new { controller = "Home", action = "Index", id = UrlParameter.Optional },
     namespaces: new string[] { "TKDCenter.Controllers" }
);

 分区项目的路由配置:

context.MapRoute(
    "Api_default",
     "Api/{controller}/{action}/{id}",
     new { action = "Index", id = UrlParameter.Optional },
     namespaces:new string[]{ "TKDCenter.Areas.Api.Controllers" }
);

这样就可以实现同名控制器的不同路径访问了 
http://XXX/api/course/index
http://XXX/course/index

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值