我有一个MVC视图,它根据用户的角色更改了一些小的UI元素。目前,它使用一些if()语句使用我通过viewmodel发送给视图的几个布尔值来修改输出。但是,它似乎不是一个非常好的方法,所以我想要做的是将这一切都移到HtmlHelper类或控制器本身。这是当前的代码:
<% if ( Model.IsAdmin ) { %> <td> <% } %> <%--Opening tag for admin options--%>
<% if ( Model.IsAdmin ) { %> <%:Html.ActionLink("Delete", "Delete", new { id = Id})%> <% } %> <%--Admin options--%>
<% if ( Model.IsAdmin ) { %> </td> <% } %> <%--Closing tag for admin options--%>
还有一个单独的位置,我也可以显示/隐藏创建新链接
<% if ( Model.IsEditor || Model.IsAdmin ) { %>
<%:Html.ActionLink("Create New", "Create") %>
<% } %>
也可能有其他一些情况。
因此,我构建的任何HtmlHelper都可能需要针对不同情况的几个重载,因此它可能需要非常灵活。我一直在四处寻找最好的方法,这似乎是其他人可能已经提出的常见问题......
谢谢!
答案 0 :(得分:1)
在视图中使用部分视图或为每个角色创建不同的视图,并根据角色呈现视图。您也可以查看RenderAction。
答案 1 :(得分:1)
看起来此解决方案符合您的需求: