vistas renderbody página plantillas parciales para net método mvc llamado diseño dinamico asp arquitectura asp.net-mvc user-roles

renderbody - ASP.NET MVC Comprobar rol dentro de vista



renderbody razor mvc 5 (3)

En mi Vista, tengo algunos enlaces de administrador que me gustaría ocultar y mostrar según la función del usuario. ¿Cómo puedo hacer esto dentro de la vista?

<%= if(CHECK IF USER ROLE ADMIN) { %> <div class="tools"> <ul> <li class="edit"><%= Html.ActionLink("Edit", "Edit", new { id = Model.storyId }) %></li> <li class="delete"><%= Html.ActionLink("Delete", "Delete", new { id = Model.storyId }) %></li> </ul> </div> <%= } %>


Estoy de acuerdo con la mayoría de los demás en que estos datos deben proporcionarse "predeterminados", si así lo desea, el controlador u otros servicios comerciales, mientras que la Vista simplemente utiliza, tanto como sea posible, el marcado HTML y las estructuras de control de idioma para "completar la página "usando otras aplicaciones típicas de construcción de páginas web como jquery, css, etc. etc.


<% if (Page.User.IsInRole("Admin")){ %> <%}%>

Sin embargo, esta es una idea terrible en mi opinión. Es mejor dejar que ViewData o Model represente lo que la vista debe mostrar, y la vista puede simplemente verificar los datos de la vista. Una clase base de controlador o un filtro de acción puede hacer un uso repetitivo de esta manera muy simple y permitir que el código exista en un solo lugar.


@if (this.User.IsInRole("Administrator")) { }