【问题标题】:ASP.NET Web Api Controller subfolder routingASP.NET Web Api Controller 子文件夹路由
【发布时间】:2013-10-17 09:45:23
【问题描述】:

我快疯了……这似乎是一个非常简单的任务。首先,我只知道 Web Api 和 MVC 的基础知识——所以请不要误导我。

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

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 }

【问题讨论】:

  • 路由实际上并不使用文件系统,它路由到控制器动作。
  • 但是如果控制器在子文件夹中,您是否不必在某些时候提供路径?它不只是找到它吗?
  • 按照惯例,框架在Controller 文件夹中查找控制器,但除此之外,它不查看路径。为什么需要为每个控制器创建一个子文件夹?如果你愿意,你可以摆弄路由以获得恰到好处的 URL,如果那是你所追求的。

标签: asp.net asp.net-mvc asp.net-web-api


【解决方案1】:

没关系,我是个白痴……我保留了默认路由,删除了 url 中的“报告”。它找到了控制器,即使它位于子文件夹中。

【讨论】:

  • 我感觉这会带来麻烦。如果由于使用了子文件夹,您有两个由不同名称空间分隔的同名控制器怎么办。这只是 WebApi 设计中的一个疏忽。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-10-05
  • 1970-01-01
  • 2017-02-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多