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"))
{
}