11

有没有办法在 Webapi 项目的 Controller 文件夹中添加子文件夹?

我正在考虑诸如 Controller/Customer 之类的东西,包括 Customer 模块的控制器。

4

4 回答 4

6

控制器不以这种方式工作。在 Asp.NET 中,您的文件夹结构就是您的网站结构。在 WEB API 中,控制器的查找独立于结构。事实上,您可以将它们放在不同的程序集中,框架仍然可以找到它们。路由不会按您期望的方式工作。您可以添加一条路线,其中包含您的“文件夹名称”,就像您说的那样, localhost/WebApp/{foldername}/{controller}. 只能{foldername}是普通的静态文件夹名称 ( localhost/WebApp/foldername/{controller})。所以客户端将不得不在其中调用带有“文件夹名”的 url,但代码的位置并不重要,因为 MVC 框架不会区分控制器下的文件夹树。

于 2012-12-17T16:29:51.133 回答
2

我使用区域来解决这个问题。如此处指定 http://blogs.infosupport.com/asp-net-mvc-4-rc-getting-webapi-and-areas-to-play-nicely/

于 2013-02-22T11:40:42.817 回答
2

我为自己解决这个问题所做的是添加另一个 Maproute 并在控制器之前添加命名空间。只需注意两点:

  1. 您的新路线应该在默认路线之前
  2. 您不能为默认名称添加名称空间

        routes.MapRoute(
           name: "Secretariat",
           url: "{namespace}/{controller}/{action}/{id}",
           defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
       );
    
于 2015-02-02T06:07:15.853 回答
2

这里的答案是错误的。你可以很容易地做到这一点。你只需要在你的控制器类上指定路由:

位于/Controllers/Authentication文件夹中

//An example of you specifying a diff. route than the folder path
[Route("api/login")]
public class LoginController {...}
于 2017-04-20T23:26:57.973 回答