2017-06-20 1 views
0

Ich habe eine MVC WebApp, wo ich Azure AD Rollen erfolgreich authentifizieren und in meine App ziehen kann. Wie kann ich Navbar-Tabs wie 'home' 'über' usw. in meiner _Layout.cshtml-Datei basierend auf dieser Rolle ein- oder ausblenden?MVC Webapp verstecken/anzeigen Tabs mit Azure AD Rollen

Ich kann Seiten in der Steuerung mit [Authorize(Roles = "")] autorisieren, aber ich möchte auf der Ebene der Navbar verstecken. Welche Codezeile (n) fehlt mir, um diese Dynamik zu erzeugen?

Hier ist der Code in meiner _Layout.cshtml Datei, die ich diese Suche möglich zu machen:

 <div class="navbar-header"> 
      <button type="button" class="navbar-toggle" data-toggle="collapse" data-target=".navbar-collapse"> 
       <span class="icon-bar"></span> 
       <span class="icon-bar"></span> 
       <span class="icon-bar"></span> 
      </button> 
      @Html.ActionLink("My Project", "Index", "Home", new { area = "" }, new { @class = "navbar-brand" }) 
     </div> 
     <div class="navbar-collapse collapse"> 
      <ul class="nav navbar-nav"> 
       <li>@Html.ActionLink("Home", "Index", "Home")</li> 
       <li>@Html.ActionLink("About", "About", "Home")</li> 
       <li>@Html.ActionLink("Contact", "Contact", "Home")</li> 
      </ul> 
      @Html.Partial("_LoginPartial") 
     </div> 

Vielen Dank im Voraus für die Hilfe!

Antwort

1

Auf MVC haben Sie das User Objekt, das Ihnen Informationen über den angemeldeten Benutzer gibt. Verwenden Sie einfach die User.IsInRole(roleName) Methode, es sollte funktionieren.

Beispiel:

<div class="navbar-header"> 
     <button type="button" class="navbar-toggle" data-toggle="collapse" data-target=".navbar-collapse"> 
      <span class="icon-bar"></span> 
      <span class="icon-bar"></span> 
      <span class="icon-bar"></span> 
     </button> 
     @Html.ActionLink("My Project", "Index", "Home", new { area = "" }, new { @class = "navbar-brand" }) 
    </div> 
    <div class="navbar-collapse collapse"> 
     <ul class="nav navbar-nav"> 
      <li>@Html.ActionLink("Home", "Index", "Home")</li> 
      <li>@Html.ActionLink("About", "About", "Home")</li> 
      @if(User.IsInRole("Admin")) 
      { 
       //Only the user with "Admin" role can see this 
       <li>@Html.ActionLink("Contact", "Contact", "Home")</li> 
      } 
     </ul> 
     @Html.Partial("_LoginPartial") 
    </div> 
+1

Arbeitete perfekt! Danke, für die schnelle Antwort. – Alex

+0

Gut zu helfen. Überprüfen Sie die richtige Antwort, damit andere Personen mit dem gleichen Problem diese Antwort leichter finden. –