我在System.Web.Http.ApiController中无法做的System.Web.Mvc.Controller中可以做什么

时间:2013-11-05 12:14:35

标签: c# asp.net asp.net-mvc asp.net-mvc-4 asp.net-web-api

我有一个基于MVC5和WebApi构建的系统。我想创建一个新的控制器。它的功能是返回API类型数据以响应REST请求。它还需要能够作为后端响应到具有按钮的页面,其中按钮用于运行一些快速过程以将数据移动到表中。

据我所知,我可能需要一个WebAPI控制器来处理REST请求,但我错过了传统MVC控制器所带来的功能?

2 个答案:

答案 0 :(得分:2)

ApiController可以返回HttpResponseMessage,它与RFC2616定义的HTTP响应直接相关。

它可以包含有效内容,HTML,XML,JSON,Atom,jpeg等。

HTTP规范中不允许使用ApiController返回任何内容。

微软在返回“数据”和“视图”之间的区别是由产品放置而不是任何技术限制所驱动的。

答案 1 :(得分:1)

基本上是渲染页面的功能,使用api控制器只能返回数据:

  

注意如果您使用过ASP.NET MVC,那么您已经熟悉了控制器。它们在Web API中的工作方式类似,但Web API中的控制器派生自ApiController类而不是Controller类。您将注意到的第一个主要区别是Web API控制器上的操作不返回视图,它们返回数据。

Source

因此,如果您要导航到api控制器的url,它只会以特定格式显示某些数据(如Json)。如果您要导航到常规控制器的URL,它将返回一个View,您将在浏览器中看到该html页面。