2010-10-05 70 views
2

我有一個MVC視圖,根據用戶的角色更改一些小的UI元素。目前它使用幾個if()語句使用我通過視圖模型發送給視圖的一對布爾值來修改輸出。然而,它看起來並不是一個很好的方法,所以我想要做的就是將這一切都轉移到HtmlHelper類或控制器本身。下面是當前的代碼:基於角色的UI更改的更好方法?

<% 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都可能需要對不同情況進行重載,所以它可能需要非常靈活。我剛剛在我的腦海中圍繞着這個最好的方法,而且這似乎是別人可能已經想出來的一個常見問題...

謝謝!

回答

1

貌似這個解決方案將滿足您的需求:

Role-Based Content asp.net mvc

+0

感謝布萊斯,這就是我一直在尋找。雖然考慮到我可能有很多這些小檢查,但我認爲部分觀點可能是最好的方法。 – morganpdx 2010-10-05 21:10:41

1

在視圖中使用部分視圖或爲每個角色創建不同視圖並根據角色呈現視圖。你也可以檢查RenderAction