2

在与我交谈过的关于 MVC Web 框架的有限数量的人中,我听到人们说,忘记表单,视图文件最好包含 HTML 标记、字符串操作和一些for each循环。我还被告知,if如果可能的话,应该避免在观点中发表声明。这是普遍同意的吗?

编辑:激发这个问题的情况是写一个导航,我发现自己在写:

if secondary_navigation_item has children
    ...

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

4

3 回答 3

4

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

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

于 2010-06-20T15:04:12.160 回答
4

说你的观点不应该包含任何条件逻辑是愚蠢的。您将如何生成诸如“新消息”图标或 Flash 消息之类的 UI 元素——为每种可能的界面状态使用不同的视图模板?这就像说您的控制器不应包含任何变量分配,因为数据操作属于模型。

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

每个规则都有一个例外,在某些情况下,您在控制器中进行字符串操作,甚至在视图中实现应用程序流。有时您只需要逐个评估它并应用一些常识即可。

于 2010-06-20T16:02:03.477 回答
2

一个视图基本上应该包含:

  • HTML 标记
  • Javascript
  • CSS
  • 您可能需要查看的最少服务器端代码

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

更多信息:

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

于 2010-06-20T14:55:33.987 回答