2011-02-07 13 views
8

Piszę moją pierwszą aplikację MVC 3 (w ASP.NET) i nie wiem jak mogę (powinien) wyświetlić menu dla różnych użytkowników.ASP.NET MVC - menu dla różnych ról

Moja aplikacja jest tworzona jako MVC3 aplikacji WWW i wygląd menu jak poniżej:

<div id="menucontainer"> 
      <ul id="menu"> 
       <li>@Html.ActionLink("Home", "Index", "Home")</li> 
       <li>@Html.ActionLink("Info", "Info", "Home")</li> 
      </ul> 
</div> 

Stworzyłem dwa rodzaje ról: użytkownika i administratora. Teraz chcę pokazać inne linki dla użytkownika (Projekty, Profil) i dla administratora (Zarządzaj projektami, Zarządzaj kontami, Zarządzaj nowościami).

Jak powinienem to zrobić?

+2

Pan spojrzał na to pytanie: [budowanie ASP.NET MVC Mistrz stronie menu dynamiczne, oparte na „Roli” Obecny użytkownika] (http://stackoverflow.com/questions/2203320/building-an-asp-net-mvc-master-page-menu-dynamicznie oparte na bieżących-użytkownikach), wydaje się odnosić do prawie tego samego pytania, które masz I ludzie odpowiedzieli na to pytanie. – R0MANARMY

Odpowiedz

7

znalazłem rozwiązanie:

<div id="menucontainer"> 
      <ul id="menu"> 
       <li>@Html.ActionLink("Home", "Index", "Home")</li> 
       <li>@Html.ActionLink("Info", "Info", "Home")</li> 
       @if (Request.IsAuthenticated && HttpContext.Current.User.IsInRole 
("user")) { 
        <li>Projects link</li> 
        <li>Profile link</li> 
       } 
       @if (Request.IsAuthenticated && HttpContext.Current.User.IsInRole 
("admin")) { 
        <li>Manage Projects link</li> 
        <li>Manage Accounts link</li> 
       } 
      </ul> 
</div> 
+9

Nie powinieneś umieszczać tak dużej logiki warunkowej w swoim widoku. Jeśli nalegasz na zrobienie tego w ten sposób, powinieneś naprawdę umieścić oba te kontrole w swoim działaniu i dodać proste właściwości boolowskie do twojego ViewModel. – R0MANARMY

+0

[link] (http://forums.asp.net/t/1903464.aspx?having+5+roles+and+one+layout+do+wszystko+z+przypadku+menu+peratury + w + mvc) @ehoog tej logiki nie należy stosować w widoku, ponieważ sprawia, że ​​kod widoku jest bardzo brudny i narusza zasady MVC. Ta logika powinna znajdować się w kontrolerze. Proponuję: Utworzenie klasy modelu W akcji kontrolera wypełnij model danymi dla pozycji menu (w zależności od roli). W widoku wygeneruj menu, używając danych menu z modelu. – sosha

Powiązane problemy