2014-11-01 61 views
2

只有當用戶被授權進行給定動作時,我纔會顯示動作鏈接。有沒有一種好的方法可以在cshtml中做到這一點,而不必重複電鍍。不檢查我已經在屬性中設置的相同權限。授權的動作鏈接

謝謝

回答

0

您可以將鏈接存儲在數據庫中。 並根據用戶分配權限。 根據權利進行查看。

0
[HttpPost] 
    [InitializeSimpleMembership] 
    [Authorize(Roles = "YourRole")]   
    public ActionResult Create(Product p) 
    { 
     ... 
    } 

    @if (User.IsInRole("YourRole")) 
    { 
     @Html.ActionLink("Create Product", "Create") 
    } 
+0

這不會使用ASP.NET身份。 'IsInRole'拋出異常,這是有點obselete。 – DarthVader 2014-11-01 08:29:59

+1

您是否也將此屬性添加到您的控制器? [InitializeSimpleMembership] – 2014-11-01 08:32:39

+0

這是過去十年中現在有了ASP.NET的身份。 – DarthVader 2014-11-01 08:35:18

0

我已經使用這個輔助函數過去只返回輸出,當條件滿足這樣的:

public static MvcHtmlString If(this MvcHtmlString value, bool evaluation) 
{ 
    return evaluation ? value : MvcHtmlString.Empty; 
} 

所以你可以使用這個:

@Html.ActionLink("Create New", "Create").If(User.IsInRole("Your Role")) 

它是清晰可辨和短

+0

我已經看到了這個答案,並且正在尋找不涉及在兩個不同地方重複我的權利的內容。 – 2014-11-03 07:58:29