更好地处理基于角色的UI更改?

时间:2010-10-05 18:44:16

标签: asp.net-mvc-2

我有一个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都可能需要针对不同情况的几个重载,因此它可能需要非常灵活。我一直在四处寻找最好的方法,这似乎是其他人可能已经提出的常见问题......

谢谢!

2 个答案:

答案 0 :(得分:1)

在视图中使用部分视图或为每个角色创建不同的视图,并根据角色呈现视图。您也可以查看RenderAction

答案 1 :(得分:1)

看起来此解决方案符合您的需求:

Role-Based Content asp.net mvc