在查看ASP.NET MVC站点的示例时,我在视图中看到了很多嵌入式逻辑示例,例如:
<% if (customerIsAllowed) { %>nnn
nnn
nnn
nnn
nnn
<% } else {%>nnn
nnn
nnn
nnn
nnn
<% } %>
虽然这对我来说似乎是错误的,因为它是我们试图摆脱ASP 3.0的那种东西,我甚至在一些播客中听到过"MVC框架的其余部分"中的"一点点逻辑是否正常"正在照顾我们在ASP 3.0中没有的结构.
是否有任何MVC约定指定视图中允许的逻辑类型和数量?
这取决于逻辑的原因.如果逻辑是根据控制器传递给它的某些属性选择备用表示,则可能没问题.这允许您进行一些视图重用.您可以传入一些允许根据此权限自定义视图的数据,而不必为每个自定义权限重新创建(并重复)整个视图.
我认为这是理想化的MVC和严格执行DRY之间的务实平衡(不要重复自己).在某些情况下,如果你不能轻易地达到这两者,那么违反其中一个是明智的.在显然模型和基本视图相同的情况下,在视图中放置一些逻辑以保持您的视图DRY是合理的.