J'ai vu des questions similaires, mais aucune qui ressemble à ce que j'essaie de faire.Création d'un menu ASP.NET MVC Master Page Dynamiquement, basé sur le «rôle» de l'utilisateur actuel
Ceci est mon implémentation actuelle w/toute sécurité:
<div id="menucontainer">
<ul id="menu">
<li><%= Html.ActionLink("Main List", "Index", "AController")%></li>
<li><%= Html.ActionLink("Product List", "Index", "BController")%></li>
<li><%= Html.ActionLink("Company List", "Index", "CController")%></li>
<li><%= Html.ActionLink("User List", "Index", "DController")%></li>
</ul>
</div>
Cela est bien, et les travaux ci-dessus. J'ai l'option [Authorize] Attributes sur les actions pour CController et DController pour empêcher l'accès non autorisé - mais je voudrais supprimer ces éléments du menu pour les utilisateurs qui n'ont pas le rôle correct, parce que quand ils le voient et cliquez dessus et il leur dit qu'ils n'ont pas la permission, ils le voudront. S'ils ne savent pas que c'est là, c'est mieux pour tout le monde ...
Quelque chose comme ceci est en fin de compte l'objectif que je cherche à atteindre, mais je suis à la recherche de l'approche plus MVC aromatisée, où la "vue" est "stupide":
<div id="menucontainer">
<ul id="menu">
<li><%= Html.ActionLink("Main List", "Index", "AController")%></li>
<li><%= Html.ActionLink("Product List", "Index", "BController")%></li>
<% If(Role = Roles.Admin) { %>
<li><%= Html.ActionLink("Company List", "Index", "CController")%></li>
<li><%= Html.ActionLink("User List", "Index", "DController")%></li>
<% } %>
</ul>
</div>
Je suis ... je pense. Il y a deux niveaux d'utilisateur, Normal et Admin. Seul l'administrateur peut voir les listes Société et Utilisateur, les attributs [Autoriser] sur le contrôleur empêchent l'accès non autorisé, mais je veux cacher la vue aux non-administrateurs afin qu'ils n'obtiennent même pas l'idée que c'est là dans leur tête. – Nate