我刚刚开始使用VS2012RC,我正在创建一个WebApiMVC4Web应用程序,我计划在其中提供基于ASP.NET的用户界面和基于WebApi的编程界面。
对于我的超文本标记语言网站,我为我的每个模型(MVC!)都有一个控制器和视图,并且路由“按照约定”工作,例如,URL /client
连接到我的ClientController
。我的ClientController
是从Controller
派生的。
对于我的应用程序接口,我将创建从ApiController
派生的新控制器。我自然希望我的API与HTML类似,所以我希望客户端信息可以在/api/client
上获得。但是,对于非常规路由,这意味着我需要一个名为ClientController
的ApiController。而且我已经有了一个ClientController
类。
我该如何处理这件事?我是否需要自定义路由?我是否将API类放在不同的名称空间中,以便为它们提供相同的名称?
这个问题似乎表明我只需要一个不同的控制器命名空间:Mix web api controllers and site controllers
发布于 2012-08-02 06:28:20
它所需要的就是控制器类位于不同的名称空间中,一切都很好。
使用MVC区域也可以(正如gordonml的评论中所建议的那样),但这有效地将控制器放在不同的名称空间中,因此它是实现相同结果的更正式的方式。
发布于 2012-07-20 00:17:41
你可以看看following blog post,它说明了Api控制器是如何服务于Razor视图的。基本上,他使用RazorEngine来解析Razor view end serve。
发布于 2017-12-14 05:19:43
对于正在寻找如何在WebApi项目上执行此操作的分步指南的任何人:
和创建两个文件夹/名称空间,即:ControllersApi
和ControllersWeb
ControllersWeb
Add -> Controller
并选择MVC 5 Controller - Empty
。这将添加所有其他依赖项,如果您的WebApi项目中没有这些依赖项。
RouteConfig
现在将注册那些从Controller
基类继承的类。您可能需要添加到默认控制器的链接,方法是将默认值编辑为:defaults: new { action = "Index", controller = "Home", id = UrlParameter.Optional }
就是这样,您现在可以运行site并使用API和Web控制器。
https://stackoverflow.com/questions/11564922
复制相似问题