/ / Role špecifické ovládacie prvky v pohľade - asp.net, asp.net-mvc-5, asp.net-identity

Role špecifické ovládacie prvky v pohľade - asp.net, asp.net-mvc-5, asp.net-identity

Snažím sa skryť ovládacie prvky založené na úlohe používateľa. Kedysi som bol schopný niečo urobiť

@if (User.IsInRole("Admin"))
{Html.ActionLink("RolesAdmin", "Index", "RolesAdmin")}

v pohľade, ale zdá sa, že už to nefunguje. Po mnohých kopoch som zistil, že Identity 2.0 to vôbec nepoužíva.

Existuje ešte niečo, čo môžem použiť priamo z Pohľadu? Alebo to robím úplne zle?

odpovede:

0 pre odpoveď č. 1

To by malo fungovať aj napriek tomu, že vzorky totožnosti v súčasnosti robia niečo podobné ako len odkazy na najvyššiu úroveň pre správcov.

            @if (Request.IsAuthenticated && User.IsInRole("Admin")) {
<li>@Html.ActionLink("RolesAdmin", "Index", "RolesAdmin")</li>
<li>@Html.ActionLink("UsersAdmin", "Index", "UsersAdmin")</li>
}

0 pre odpoveď č. 2

Tento typ logiky je lepšie umiestnený v riadiacej jednotke, ponechať zobrazenie na vykresľovanie.

Môžete použiť Html.Action s kombináciou ChildActions v ovládači a vykresľovať čiastočné zobrazenia v závislosti od úlohy používateľa.

Napísal som podobnú otázku pred chvíľou a myslím, že by to bolo pre vás užitočné.

Navigácia podľa rolí

-EDIT-

Pre objasnenie to funguje pomocou novej identity ASP.NET

To by bolo v rozložení

@Html.Action("BuildNavigation", "Component")

A to by bol váš kontrolór.

public class ComponentController : Controller
{

[ChildActionOnly]
public ActionResult BuildNavigation()
{

if (this.User.IsInRole("customer"))
{
return PartialView("_NavigationCustomer");
}
else
{
return PartialView("_NavigationBasic");
}


}
}

To by malo ísť správnym smerom.