2011-04-06 4 views
3

asp mvc3 프로젝트를 만들었습니다. 어떤 컨트롤러가 선택되었는지에 따라 다른 _Layout.cshtml을 갖고 싶습니다. 이것은 컨트롤러 1에는 컨트롤러 2가있는 버튼이 2 개 있고 컨트롤러 3에 4가있을 것이기 때문입니다. 각 컨트롤러는 특정 유형의 사용자 용이므로 로그인에 따라 다릅니다.컨트롤러에 따라 다른 _Layout.cshtml을 지정하십시오.

어떻게 컨트롤러와 뷰를 다른 Layout.cshtml에 링크 할 수 있습니까? 지금은 하나의 레이아웃이 있고 Shared 폴더 아래에 있습니다.

감사합니다.

답변

11

보기가 컨트롤러가 아닌 레이아웃을 결정해야합니다.

컨트롤러는 어떤 View가 반환되는지 결정해야합니다.

그런 다음보기의 맨 위에서 레이아웃을 지정할 수 있습니다. 조금 일자 및 MVC 5, 나는 당신이 브래킷을 가지고 있지 몇 가지 문제를 알고 당신은 그것을 다른 한 이후이 시점에서

@{ 
    if(ViewBag.someValue) 
     Layout = "~/Views/Shared/_Layout.cshtml"; 
    else 
     Layout = "~/Views/Shared/_otherLayout.cshtml"; 
} 
+0

+1. – Saxman

1

데이터를 기반으로 변경하기 위해 주위에 If 문을 추가 할 것은 . 보기를 논리로 사용하려면 여기에 좀 더 완전한 대답이 필요합니다.

컨트롤러 간단하고 효과적인 솔루션

public ActionResult Index() 
{ 
    ViewBag.Admin = 1; 
    return View(); 
} 

보기

@{ 

    if (ViewBag.Admin == 1) 
    { 
     Layout = "~/Views/Shared/_AdminLayout.cshtml"; 
    } 
    else 
    { 
     Layout = "~/Views/Shared/_Layout.cshtml"; 
    } 

} 
관련 문제