【发布时间】:2014-04-07 11:10:18
【问题描述】:
Controller(MVC) 与 ApiController 和 BreezeController 和 IHttpController 和 有什么不同ODataController?
为什么
MVC中有这么多控制器?哪个是主控制器?我可以在一个控制器中注入所有控制器吗?
【问题讨论】:
标签: c# asp.net-mvc api controller odata
Controller(MVC) 与 ApiController 和 BreezeController 和 IHttpController 和 有什么不同ODataController?
为什么
MVC中有这么多控制器?哪个是主控制器?我可以在一个控制器中注入所有控制器吗?
【问题讨论】:
标签: c# asp.net-mvc api controller odata
MVC Controller 是一个通用控制器(“主”控制器)。
API Controller 是特定于 WebApi(“WebServices”)项目的 MVC 控制器。
ODataController(这是一个 ApiController)为支持使用 OData 格式写入和读取数据的 OData 控制器定义了一个基类。
IHttpController 是一个接口,可帮助实现自定义 HTTP 控制器的通用 功能。
我不知道“BreezeController”类的存在,但我认为this article 可能会有所帮助。
无需将一个控制器“注入”到另一个控制器中。看看那个article,可能会有帮助。
【讨论】:
Mvc 控制器结构:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
namespace MvcDemo.Controllers
{
public class HomeController : Controller
{
public ActionResult Index()
{return View();}
public ActionResult About()
{return View();}
}
}
1.找到适当的动作方法来调用并验证它是否可以被调用。 2.获取用作操作方法参数的值。 3.处理action方法执行过程中可能出现的所有错误。
【讨论】:
MVC 控制器和 API 控制器都应该只容纳“端点”。 MVC 控制器中的端点通常是用于 HTML 视图的 ActionResult 类型的方法、用于响应 AJAX 调用的 JsonResult 或用于返回状态指示符的简单字符串,而 API 控制器中的端点可以是通常以 JSON 格式表示的任何自定义类类型.
任何 http 请求都会命中控制器内部的指定端点方法,因此您可以将控制器视为类似于网站的“虚拟目录”。
所有业务逻辑和数据处理都应该在模型和业务逻辑层中实现。端点只是决定将请求定向到哪个进程,并返回模型进程产生的结果。
这篇文章更详细地描述了两者之间的区别: https://www.linkedin.com/pulse/webapi-vs-mvc-comparing-apples-oranges-yogi-grantz
【讨论】:
MVC 控制器是一个通用控制器(“主”控制器)。
API 控制器是特定于 WebApi(“WebServices”)项目的 MVC 控制器。
ODataController(这是一个 ApiController)为支持使用 OData 格式写入和读取数据的 OData 控制器定义了一个基类。
IHttpController 是一个接口,帮助实现自定义 HTTP 控制器的通用功能。
我不知道“BreezeController”类的存在,但我认为这篇文章可能会有所帮助。
没有必要将一个控制器“注入”到另一个控制器中。看看那篇文章,它可能会有所帮助。
【讨论】: