我发现自己在我的视图中编写了很多代码,看起来像下面的代码。在这种情况下,我想为新手添加一些解释性HTML,为专家用户添加不同的HTML。
<% if (ViewData["novice"] != null ) { %>
some extra HTML for a novice
<% } else { %>
some HTML for an expert
<% } %>
这是表示逻辑,因此它在视图与控制器之间是有意义的。然而,它变得非常难看,特别是当ReSharper想要移动所有的支撑以使其更加丑陋时(有没有办法将其关闭以用于视图?)。
我的问题是这是否合适,还是应该将控制器分支到两个单独的视图?如果我做两个视图,我将有很多重复的HTML来维护。
或者我应该使用共同的部分视图来共享两个单独的视图吗?
答案 0 :(得分:2)
理想情况下,这种逻辑将在视图模型中处理,视图应该只是渲染模型。
所以你可能会在你看来有类似的东西:
<%= ViewData["helptext"] %>
并且您在控制器中的逻辑将类似于:
ViewData["helpText"] = isNovice ? noviceText : expertText;
通过这种方式,您可以将该逻辑推回控制器,并使您的视图保持良好和干净
答案 1 :(得分:1)
您正在尝试使用相同的模型创建2个完全独立的html页面。你想要一个单独的视图。不要试图用条件分支逻辑来巧妙地设计模式。
HTML助手在这里对你没什么帮助,因为看起来你不会重复除了if之外的其他逻辑。