【问题标题】:What is the role of Controller in MVC model?MVC模型中Controller的作用是什么?
【发布时间】:2018-06-01 18:26:57
【问题描述】:

我在这里浏览了一些答案和一些关于 MVC 的文章,但我仍然对控制器在 MVC 应用程序中的角色感到困惑。

我在一本书中读到,模型是自包含的,并且功能独立于视图和控制器。并且模型包含业务逻辑和数据访问代码。 Source

也在最佳答案中 这里 What goes into the "Controller" in "MVC"?

但是这里的其他答案说它是代表业务逻辑的控制器

Where can I find a dead-simple explanation of MVC?

那么哪个是正确的答案?

【问题讨论】:

  • @Stefan 我已经解决了这个问题。仍然混乱!
  • 投票关闭只是因为那里已经有大量信息(包括这里);像 MVC 这样的东西是模式,并不是每个人都正确地遵循它们,所以你可能会在不同的地方遇到不同的答案(我知道有帮助!)。概括地说: > 模型 = 您的数据类型(例如客户、订单等) > 视图 = 显示信息的实际网页 > 控制器 = 从数据源收集模型,执行一些逻辑,然后将其传递给视图(以及其他方式也一样)。
  • 但是由于那笔财富,我真的很困惑,想一劳永逸地把事情弄清楚。就像下面的答案也不正确。由于不赞成投票,我可能无法在这里提出更多问题。怎么办>?我认为 SO 应该澄清我的理解。
  • @Clint 所以你的意思是业务逻辑发生在控制器中?

标签: c# asp.net-mvc asp.net-mvc-4 model-view-controller


【解决方案1】:

维基百科非常简单地说:控制器接受输入并将其转换为模型或视图的命令。

https://en.wikipedia.org/wiki/Model%E2%80%93view%E2%80%93controller

【讨论】:

    【解决方案2】:

    这个答案是正确的

    模型:该组件代表应用的数据和业务逻辑。MVC框架中的模型与应用的呈现无关。模型组件专注于跟踪应用程序的状态。它还定义了数据的业务规则,意味着如何更改和操作数据。

    视图:视图为模型提供用户界面 (UI)。视图的主要工作(功能)以用户可理解的格式表示信息。它使用 UI 组件,例如 HTML、CSS、Jquery 等。

    控制器:控制器充当视图和模型之间的中介。它负责控制模型和视图之间的数据传输。它将用户操作映射到模型更新中。控制器层有助于选择最合适的视图并将其交付给用户。

    实际上,控制器是视图和模型之间的中介。他们没有定义业务逻辑。模型负责业务逻辑。

    【讨论】:

    • 模型不应该负责业务逻辑,他们负责你的对象结构。如果是你刚刚打破了 Solid 的第一条规则。您的业​​务逻辑应该在单独的层中定义。因此,如果您希望更改为 WPF,例如,您仍然可以参考您的业务层。
    • 模型应该是 POCO,而不是业务逻辑的持有者。这是完全错误的。
    • @CamiloTerevinto 那么最后的正确答案是什么?
    • @Mr.J 不是真的要在这里回答,但你读过this answer吗?不管那里有什么 MVVM 组合,它都是一个不错的选择。
    【解决方案3】:

    Controller 充当 View 和 Model 类之间的中介。它仅用于删除模型和视图类之间的依赖关系。 请参考这个链接.. https://www.tutorialspoint.com/mvc_framework/mvc_framework_controllers.html

    【讨论】:

      【解决方案4】:

      ASP.NET MVC 框架将 URL 映射到称为控制器的类。 控制器处理传入请求,处理用户输入和交互,并执行适当的应用程序逻辑。控制器类通常调用单独的视图组件来为请求生成 HTML 标记。

      Controller 类负责以下处理阶段:

      • 找到适当的操作方法来调用并验证它 可以调用。
      • 获取值以用作操作方法的参数。
      • 处理在执行操作方法期间可能发生的所有错误。
      • 提供用于呈现 ASP.NET 页面类型(视图)的默认 WebFormViewEngine 类。

      【讨论】:

      • 我想你误会了,我提到控制器定位 Action 方法,将 args 传递给 Action 方法。参考MSDN link
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-05-12
      • 2011-12-26
      • 1970-01-01
      • 1970-01-01
      • 2011-06-30
      • 1970-01-01
      • 2015-11-18
      相关资源
      最近更新 更多