【问题标题】:Is fetching HTML directly from Model (MVC) a good idea?直接从模型 (MVC) 获取 HTML 是个好主意吗?
【发布时间】:2009-07-11 10:05:14
【问题描述】:
在网上看了一些用于web开发的MVC库的例子和教程,发现很多都是直接在Model类的代码中构建HTML,然后Controller直接发给View,View就显示出来了。虽然这使得 Controller 和 View 非常简单和干净,但我觉得这是一种错误的方法。恕我直言,模型应该只检索数据,其中没有任何表示逻辑。 Controller 应该将这些数据传递给 View,View 将包含遍历它并生成最终 HTML 的代码。
我的想法是正确的,还是我在这里遗漏了一些重要的点?
【问题讨论】:
标签:
model-view-controller
【解决方案1】:
呈现逻辑在视图(大部分)和控制器之间共享。该模型不应该关注表示逻辑。
如果是这样,您就没有关注点分离。这本质上并不是一件坏的事情,但是您会错过将表示和业务逻辑分开的好处。所以不,这不是一个好主意。
话虽如此,有一些表示逻辑的元素可能会进入模型。想想cms。理想情况下,您将标记所有数据,比如说 xml,您将在其上应用模板来交付它。但是数据和模板都保存在模型中。那么什么是演示,这里又是什么业务?
有灰色地带,但大多数时候很容易将表示和业务逻辑分开。
【解决方案2】:
你的想法是绝对正确的。如果您想要清晰地分离关注点,最好让视图从模型生成 HTML。在某些情况下,可以使用 html 助手。
【解决方案3】:
直接从模型 (MVC) 获取 HTML 是个好主意吗?
我的直觉会说不。打破了关注点分离的概念。