2013-02-19 2 views
39
@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> 

사용자가 관리자로 인증되었지만 수표가 좋지 않은 것으로 보이는 경우 내 레이아웃입니다. 사용자 이름이 아닌 사용자의 역할을 확인해야합니다. 나는 그 user의 사용을 만드는 방법을 모르기 때문에 여기 면도날 페이지의 로그인 사용자 역할 확인

는 CONTROLER 방법

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) 더 좋은 없다는 것을 찾을 수 있습니다.

+2

'@if (Request.IsAuthenticated && User.IsInRole ("administrator"))' – codingbiz

답변

89
@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> 
} 
12

데이브의 대답은 정확합니다. 모델에 IsAdministrator 또는 CanSeeSidebar이라는 속성을 사용하고 해당 질문에 도메인 로직으로 대답하는 것이 좋습니다.

보기는 모델에서만 작동합니다. 데이터베이스에서 읽는 스레드를 보면 도메인 질문에 응답한다는 점에서 동일합니다. 컨트롤러가보기에 모델을 제시하기 전에 모든 유형의 질문에 응답해야합니다.

+0

공유보기에 넣으려면 어렵지 않습니까? 네비게이션을 사용하면 거의 확실합니까? – niico