首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >我可以同时使用控制器和ApiController来做同一件事吗?

我可以同时使用控制器和ApiController来做同一件事吗?
EN

Stack Overflow用户
提问于 2012-07-20 00:10:10
回答 3查看 8.8K关注 0票数 16

我刚刚开始使用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

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-08-02 06:28:20

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

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

票数 12
EN

Stack Overflow用户

发布于 2012-07-20 00:17:41

你可以看看following blog post,它说明了Api控制器是如何服务于Razor视图的。基本上,他使用RazorEngine来解析Razor view end serve。

票数 2
EN

Stack Overflow用户

发布于 2017-12-14 05:19:43

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

和创建两个文件夹/名称空间,即:ControllersApiControllersWeb

  • Right单击ControllersWeb

  • go Add -> Controller并选择MVC 5 Controller - Empty。这将添加所有其他依赖项,如果您的WebApi项目中没有这些依赖项。

  • 您的RouteConfig现在将注册那些从Controller基类继承的类。您可能需要添加到默认控制器的链接,方法是将默认值编辑为:defaults: new { action = "Index", controller = "Home", id = UrlParameter.Optional }

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

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11564922

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档