在与我交谈过的关于 MVC Web 框架的有限数量的人中,我听到人们说,忘记表单,视图文件最好包含 HTML 标记、字符串操作和一些for each
循环。我还被告知,if
如果可能的话,应该避免在观点中发表声明。这是普遍同意的吗?
编辑:激发这个问题的情况是写一个导航,我发现自己在写:
if secondary_navigation_item has children
...
我在想,理想情况下,这是否符合逻辑(不应该在这里)?
在与我交谈过的关于 MVC Web 框架的有限数量的人中,我听到人们说,忘记表单,视图文件最好包含 HTML 标记、字符串操作和一些for each
循环。我还被告知,if
如果可能的话,应该避免在观点中发表声明。这是普遍同意的吗?
编辑:激发这个问题的情况是写一个导航,我发现自己在写:
if secondary_navigation_item has children
...
我在想,理想情况下,这是否符合逻辑(不应该在这里)?
一般来说,视图不应该包含任何服务器端的业务逻辑。但它仍然可以包含与渲染视图直接相关的逻辑。
一个示例是包含某种变体记录的视图,其显示取决于特定字段的设置。例如,根据设置为男性或女性的性别字段显示不同信息的记录。当然,这需要if
声明。
说你的观点不应该包含任何条件逻辑是愚蠢的。您将如何生成诸如“新消息”图标或 Flash 消息之类的 UI 元素——为每种可能的界面状态使用不同的视图模板?这就像说您的控制器不应包含任何变量分配,因为数据操作属于模型。
只要它是与视图相关的逻辑,在您的视图中包含逻辑是完全可以的。您不应该陷入对模型-视图-控制器定义的绝对或迂腐解释。只要您理解并应用 MVC 的基本概念,您就走在了正确的轨道上。
每个规则都有一个例外,在某些情况下,您会在控制器中进行字符串操作,甚至在视图中实现应用程序流。有时您只需要逐个评估它并应用一些常识即可。
一个视图基本上应该包含:
因此,视图通常应该包含布局元素。主要的处理逻辑应该放在Controller中。
更多信息:
http://en.wikipedia.org/wiki/Model%E2%80%93view%E2%80%93controller