Проверка роли пользователя для входа в страницу бритвы

@if (Request.IsAuthenticated && User.Identity.Name=="administrator")
{
     <div id="sidebar">
        <div class="module">
        <ul class="menu">
                            <li>@Html.ActionLink("Home", "Index", "Home")</li>
                            <li>@Html.ActionLink("About", "About", "Home")</li>
                            <li>@Html.ActionLink("Contact", "Contact", "Home")</li>
                        </ul>
         </div>
         <div class="mainContent">
             Hello, @User.Identity.Name !
         </div>
     </div>

Это мой макет, если пользователь аутентифицирован как администратор, но этот вид проверки не подходит, мне нужно проверить роль пользователя, а не его имя.

Вот метод управления

    public ActionResult AuthenticatedUserLayout(string username) 
    {
        var lst=userContext.UserProfiles.ToList();
        var user = lst.Select(u => u.UserName == username);

        if(IsAdmin(Session["LoginUser"].ToString())) return View(user); else return Index();
    }

Я также обнаружил, что return View(user) не годится, потому что я не знаю, как использовать это user.

Ответ 1

@if (Request.IsAuthenticated && User.IsInRole("Administrators"))
{
     <div id="sidebar">
        <div class="module">
           <ul class="menu">
              <li>@Html.ActionLink("Home", "Index", "Home")</li>
              <li>@Html.ActionLink("About", "About", "Home")</li>
              <li>@Html.ActionLink("Contact", "Contact", "Home")</li>
            </ul>
         </div>
         <div class="mainContent">
             Hello, @User.Identity.Name !
         </div>
     </div>
}

Ответ 2

Ответ Дэйва правильный. Я бы предположил, что вы рассматриваете использование свойства в своей модели под названием IsAdministrator или CanSeeSidebar и рассматриваете ответ на этот вопрос как логику домена.

Представление должно работать только с моделью. Глядя на поток, читающий из базы данных, одинаковы в отношении того, что они отвечают на вопросы домена. На все те типы вопросов следует ответить, прежде чем ваш контроллер передаст модель в представление.