English 中文(简体)
ASP.NET MVC视图允许多少逻辑?
原标题:
  • 时间:2009-01-14 14:40:49
  •  标签:

在查看ASP.NET MVC网站的样本时,我看到很多在视图中嵌入逻辑的示例,例如:

<% if (customerIsAllowed)
   { %>

   <p>nnn</p>
   <p>nnn</p>
   <p>nnn</p>
   <p>nnn</p>
   <p>nnn</p>

<% }  else {%>

   <p>nnn</p>
   <p>nnn</p>
   <p>nnn</p>
   <p>nnn</p>
   <p>nnn</p>

<% } %>

尽管对我来说这似乎是错误的,因为这是我们在ASP 3.0中试图摆脱的那种东西,但我甚至在一些播客中听说过“在视图中加入一点逻辑是可以的”,因为MVC框架的其余部分正在处理我们在ASP 3.0中没有的结构。

有没有MVC公约规定视图中允许有哪种和多少逻辑?

最佳回答

这取决于逻辑的原因。如果逻辑是基于控制器传递给它的某个属性选择备用呈现方式,那么它可能是可以的。这允许你重复使用一些视图。而不是为每个自定义权限重新创建(和重复)整个视图,可以传递一些数据,允许基于此权限自定义视图。

我认为这是理想化MVC和严格执行DRY(不要重复自己)之间的实用平衡。在某些情况下,如果您无法轻松实现两者之一,最好违反其中一个。如果明显模型和基本视图相同,则在视图中加入一些逻辑以保持视图DRY是合理的。

问题回答

如果逻辑涉及视图格式,而不会导致实体或数据的更改,那么我认为视图中可以接受。

四十二。

只是开玩笑 :-)

这个问题并没有固定的答案,虽然区分关注点是通常被接受的最佳实践。关于这个问题的辩论可能相当无休止,知道如何为你特定的项目正确处理它需要经验和能够注意到“代码异味”或不合适的事物。

这里有另外一种思考方式。展示逻辑放在视图中,业务处理逻辑放在控制器中,数据验证放在模型中。但应该的内容放在哪里,最终应该是指导而不是宗教:)。

只要视图中的逻辑是用于展示(如果您不喜欢在标记文件中使用,可以将其放在代码后面的文件中),那么就可以了。在您的示例中,代码/逻辑用于选择某个视图部分,这是可以的。演示文稿可以有逻辑,它不需要仅仅是 HTML。





相关问题
热门标签