16

我刚刚开始使用 VS 2012 RC,我正在创建一个 ASP.NET MVC 4 Web 应用程序,我计划在其中提供一个基于 HTML 的用户界面和一个基于 WebApi 的编程界面。

对于我的 HTML 网站,我的每个模型(MVC!)都有一个控制器和视图,并且路由“按约定”工作,例如,URL/client连接到我的ClientController. 我ClientController的派生自Controller.

对于我的 API,我将创建从ApiController. 我自然希望我的 API URL 类似于我的 HTML URL,所以我希望客户端信息可以在/api/client. 但是,使用约定俗成的路由,这表明我需要一个名为ClientController. 而且我已经ClientController上课了。

我该如何处理?我需要自定义路由吗?我是否将 API 类放在不同的命名空间中以便给它们起相同的名称?

更新:这个问题似乎表明我的 API 控制器需要一个不同的命名空间:Mix web api controllers and site controllers

4

3 回答 3

12

它所需要的只是控制器类位于不同的命名空间中,一切都很好。

使用 MVC 区域也可以(正如 gordonml 的评论中所建议的那样),但这有效地将控制器置于不同的命名空间中,因此这是实现相同结果的更正式的方式。

于 2012-08-01T22:28:20.497 回答
2

您可以查看以下博客文章,该文章说明了 Api 控制器如何也可以为 Razor 视图提供服务。基本上他使用RazorEngine来解析 Razor 视图并为其服务。

于 2012-07-19T16:17:40.627 回答
1

对于正在寻找有关如何在 WebApi 项目上执行此操作的分步指导的任何人:

  1. 创建两个文件夹/命名空间,即:ControllersApiControllersWeb
  2. 右键单击ControllersWebAdd -> Controller选择MVC 5 Controller - Empty。如果您的 WebApi 项目中没有它们,这将添加所有其他依赖项。
  3. RouteConfig现在将注册那些从Controller基类继承的类。您可能需要通过编辑默认值来添加指向默认控制器的链接:defaults: new { action = "Index", controller = "Home", id = UrlParameter.Optional }

就是这样,您现在可以运行站点并使用 API 和 Web 控制器。

于 2017-12-13T21:19:42.853 回答