什么不应该在MVC视图内?

时间:2010-06-20 14:52:24

标签: model-view-controller platform-agnostic

从我谈过的有限数量的人谈到MVC Web框架,我听说有人说,忘记表单,视图文件应理想地包含HTML标记,字符串操作和一些{{1} }循环。我也被告知,如果可能的话,应避免在for each中发表意见。这是普遍同意的吗?

修改: 启发这个问题的情况是编写导航,我发现自己在写作:

if

我在想,理想情况下,这是否符合逻辑(不应该在这里)?

3 个答案:

答案 0 :(得分:4)

一般来说,View不应包含任何服务器端业务逻辑。但它仍然可以包含与渲染视图直接相关的逻辑。

一个示例是包含某种变体记录的视图,其显示取决于特定字段的设置。例如,根据设置为男性或女性的性别字段显示不同信息的记录。当然,这需要if声明。

答案 1 :(得分:4)

说你的观点不应该包含任何条件逻辑只是愚蠢。如何生成UI元素,如“新消息”图标或flash消息 - 为每个可能的接口状态使用不同的视图模板?这就像是说你的控制器不应包含任何变量赋值,因为数据操作属于模型。

只要与视图相关的逻辑,在视图中使用逻辑就完全没问题。你不应该陷入模型 - 视图 - 控制器定义的绝对或迂腐的解释中。只要您理解并应用MVC的基本概念,您就走在了正确的轨道上。

每个规则都有一个例外,有些情况下你在控制器中进行字符串操作,甚至在视图中实现应用程序流。有时您只需要根据具体情况对其进行评估并应用一点常识。

答案 2 :(得分:2)

视图应基本上包含:

  • HTML标记
  • 的Javascript
  • CSS
  • 您可能需要将最少的服务器端代码放入视图

因此,View通常应该包含布局元素。主要的处理逻辑应该在Controller中。

更多信息:

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