MVC视图中的分支逻辑

Ale*_*ick 5 asp.net-mvc views

我发现自己在我的视图中编写了很多代码,看起来像下面的代码.在这种情况下,我想为新手添加一些解释性HTML,为专家用户添加不同的HTML.

<% if (ViewData["novice"] != null ) { %>
some extra  HTML for a novice
<% } else { %>
some HTML for an expert
<% } %>
Run Code Online (Sandbox Code Playgroud)

这是表示逻辑,因此它在视图与控制器之间是有意义的.然而,它变得非常难看,特别是当ReSharper想要移动所有支撑以使其更加丑陋时(有没有办法将其关闭以用于视图?).

我的问题是这是否合适,还是应该将控制器分支到两个单独的视图?如果我做两个视图,我将有很多重复的HTML来维护.

或者我应该使用共同的部分视图来共享两个单独的视图?

lom*_*axx 2

理想情况下,这种逻辑将在视图模型中处理,并且视图应该只渲染模型。

所以你的看法可能是这样的:

<%= ViewData["helptext"]  %>
Run Code Online (Sandbox Code Playgroud)

你在控制器中的逻辑将是这样的:

ViewData["helpText"] = isNovice ? noviceText : expertText;
Run Code Online (Sandbox Code Playgroud)

这样你就可以将该逻辑推回到控制器并保持你的视图漂亮和干净