【问题标题】:What are the differences between MVC controllers (can I inject all controllers in one controller)?MVC 控制器之间有什么区别(我可以在一个控制器中注入所有控制器)?
【发布时间】:2014-04-07 11:10:18
【问题描述】:

Controller(MVC) 与 ApiControllerBreezeControllerIHttpController 有什么不同ODataController


为什么MVC 中有这么多控制器?哪个是主控制器?我可以在一个控制器中注入所有控制器吗?

【问题讨论】:

    标签: c# asp.net-mvc api controller odata


    【解决方案1】:
    • MVC Controller 是一个通用控制器(“主”控制器)。

    • API Controller 是特定于 WebApi(“WebServices”)项目的 MVC 控制器。

    • ODataController(这是一个 ApiController)为支持使用 OData 格式写入和读取数据的 OData 控制器定义了一个基类。

    • IHttpController 是一个接口,可帮助实现自定义 HTTP 控制器的通用 功能。

    • 我不知道“BreezeController”类的存在,但我认为this article 可能会有所帮助。

    • 无需将一个控制器“注入”到另一个控制器中。看看那个article,可能会有帮助。

    【讨论】:

    • 和其他控制器是什么意思?
    • 查看我的编辑。而且,首先,您的编程问题/挑战是什么?你想做什么?如果您尝试了解控制器的工作原理,请参阅答案中的最后一个参考。
    【解决方案2】:

    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方法执行过程中可能出现的所有错误。

    【讨论】:

      【解决方案3】:

      MVC 控制器和 API 控制器都应该只容纳“端点”。 MVC 控制器中的端点通常是用于 HTML 视图的 ActionResult 类型的方法、用于响应 AJAX 调用的 JsonResult 或用于返回状态指示符的简单字符串,而 API 控制器中的端点可以是通常以 JSON 格式表示的任何自定义类类型.

      任何 http 请求都会命中控制器内部的指定端点方法,因此您可以将控制器视为类似于网站的“虚拟目录”。

      所有业务逻辑和数据处理都应该在模型和业务逻辑层中实现。端点只是决定将请求定向到哪个进程,并返回模型进程产生的结果。

      这篇文章更详细地描述了两者之间的区别: https://www.linkedin.com/pulse/webapi-vs-mvc-comparing-apples-oranges-yogi-grantz

      【讨论】:

        【解决方案4】:

        MVC 控制器是一个通用控制器(“主”控制器)。

        API 控制器是特定于 WebApi(“WebServices”)项目的 MVC 控制器。

        ODataController(这是一个 ApiController)为支持使用 OData 格式写入和读取数据的 OData 控制器定义了一个基类。

        IHttpController 是一个接口,帮助实现自定义 HTTP 控制器的通用功能。

        我不知道“BreezeController”类的存在,但我认为这篇文章可能会有所帮助。

        没有必要将一个控制器“注入”到另一个控制器中。看看那篇文章,它可能会有所帮助。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2019-12-08
          • 1970-01-01
          • 2016-04-28
          • 2013-12-24
          • 1970-01-01
          • 2013-03-17
          • 1970-01-01
          相关资源
          最近更新 更多