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ď č. 1To 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é.
-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.