Crear un menú de página maestra ASP.NET MVC dinámicamente, según el "rol" del usuario actual

He visto algunas preguntas similares, pero ninguna que se parezca a lo que estoy tratando de hacer.

Esta es mi implementación actual sin ninguna seguridad:

<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>

Esto está bien, y lo anterior funciona. Tengo la configuración de [Autorizar] Atributos en las Acciones para CController y DController para evitar el acceso no autorizado, pero me gustaría eliminar esos elementos del menú para los usuarios que no tienen el Rol correcto, porque cuando lo ven y hacen clic en él y les dice que no tienen permiso, lo querrán. Si no saben que está allí, es mejor para todos los involucrados ...

Algo como esto es en última instancia el objetivo al que estoy tratando de llegar, pero estoy buscando el enfoque más MVC Flavored, donde la "vista" es "tonta":

<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>

Respuestas a la pregunta(6)

Su respuesta a la pregunta