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