2013-10-09 65 views
10

我在这里疯了......这似乎是一个非常简单的任务。首先,我只知道Web Api和MVC的基础知识 - 所以请不要串我。ASP.NET Web Api控制器子文件夹路由

在项目中,我需要逻辑地创建控制器子文件夹(用于组织目的)。我感觉这并不像我想的那么简单。我有这样的默认路由:

config.Routes.MapHttpRoute(
      name: "DefaultApi", 
      routeTemplate: "api/{controller}/{id}", 
      defaults: new { id = RouteParameter.Optional } 
     ); 

,因为它应该直接从我的项目中的控制器文件夹其中一期工程。我在控制器文件夹控制器/报告中添加了一个子文件夹。我搜索了很多,只是不能完全找到解决方案。如何添加将直接指向子文件夹的路线。 我曾尝试:

config.Routes.MapHttpRoute(
      name: "ReportingApi", 
      routeTemplate: "api/Reports/{controller}/{id}", 
      defaults: new { id = RouteParameter.Optional } 

和:

config.Routes.MapHttpRoute(
      name: "ReportingApi", 
      routeTemplate: "api/Reports/{id}", 
      defaults: new { controller = "userunit" id = RouteParameter.Optional } 
+0

路由实际上并不使用文件系统,而是路由到控制器操作。 –

+0

但是,如果控制器位于子文件夹中,您是否在某些时候不得不提供路径?它不只是发现它呢? –

+0

按照惯例,框架在'Controller'文件夹中查找控制器,但除此之外,它不查看路径。为什么你需要为每个控制器创建一个子文件夹?如果你愿意的话,你可以摆弄路由来获取正确的URL,如果这就是你所追求的。 –

回答

3

没关系我是个白痴......我留在默认路由,删除在URL中的“报告”。它发现控制器,即使它在一个子文件夹中。

+0

我有一种感觉,这会引起麻烦。由于使用子文件夹,如果有两个由不同名称空间分隔的相同名称的控制器会怎么样?这只是WebApi设计中的一个疏忽。 – MoonStom