【问题标题】:MVC - Separation of ConcernsMVC - 关注点分离
【发布时间】:2009-09-04 00:18:59
【问题描述】:

我是新手。我想问一下 MVC 模型的关注点分离。我已经阅读了一些 MVC 教程,但我还没有完全理解模型、视图和控制器中的每一个的角色。

例如,假设我正在为用户编写一个应用程序来监控投资组合。我希望登录页面显示基于不同标准的投资列表,例如,一个可能会根据投资金额列出投资,另一个可能会根据投资业绩对其进行排序。

我的问题是,根据设计模式,我应该在哪里编写生成列表的逻辑;在模型、视图或控制器中?

非常感谢任何展示关注点分离的 asp.net MVC 示例。

提前谢谢各位。

【问题讨论】:

    标签: asp.net-mvc design-patterns


    【解决方案1】:

    冒着重复自己的风险,我会指出我给你的答案in this threadThe entire thread 可能值得您花时间,Stack Overflow 上的其他许多人也是如此。

    简单来说:

    控制器 - 控制应用程序流程并对数据做出决策。

    模型 - 执行业务逻辑。

    视图 - 产生输出。

    针对您的特定情况,您需要在 View 层中生成列表。使用模板创建列表结构,并用从模型层获取的数据填充它们。

    我不是 asp.net 程序员,所以我不能给你一个可靠的例子,但你可以四处寻找其他 SO 线程。

    【讨论】:

      【解决方案2】:

      很好的问题,这是主观的,有很多解决方案,这取决于我认为的上下文和个人的偏好。

      对于 MVC 的 ASP.Net 实现,很多人谈论模型更像是视图模型而不是其他框架中的模型(有点像 DTO)。考虑到这一点,并将控制器视为应用程序流的协调器,在通过某种类型的服务访问的附加层中生成列表不会是错误的。您将向该服务发出一组满足指定条件的 ViewModel 的请求,并让该额外层担心从该组条件生成这些列表的方式。这样,所有控制器需要知道的就是将一些标准传递给服务并为视图提供一组模型(视图模型)来显示,视图无需对如何处理已提供的数据做出任何决定, 模型又好又轻。

      希望这个解释是有道理的,如果人们不同意,我愿意接受批评......

      【讨论】:

        【解决方案3】:

        MVC 模式“要求”您在模型中插入所有“业务逻辑”。模型用于访问数据库并获取数据并以您只需使用控制器将其分配给视图的方式对其进行建模。

        图形示例:http://www.bhartisoftland.com/technologies-skill-sets/gifs/mvc-php.png

        也许不用说,您可以绕过模型的使用并将所有逻辑写入控制器中,但这会导致非常广泛且可能冗余的代码量。使用控制器,因此您可以调用模型和视图,并通过几行代码在一个与另一个之间交换信息。

        【讨论】:

        • 示例链接已损坏
        • 是的,链接坏了
        猜你喜欢
        • 2016-06-01
        • 2010-10-12
        • 2015-11-25
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多