2012-07-21 3 views
2

특정 레이아웃을 사용하도록 전체 컨트롤러를 할당 할 수있는 방법이 있습니까? ViewStart에서 레이아웃을 할당 할 수 있다는 것을 알고 있습니다. 어쨌든 viewStart가 어떤 컨트롤러가 사용되고 있는지 알고 있습니까?전체 컨트롤러에 대한 레이아웃 할당

내 목표는 관리자 컨트롤러에서 작업 할 때 별도의 탐색 모음이있는 두 개의 관리 레이아웃을 사용하는 것입니다.

당신은 사용자 지정 작업 필터를 쓸 수

답변

2

:

[Layout("_SimpleLayout")] 
public class HomeController : Controller 
{ 
    public ActionResult Index() 
    { 
     return View(); 
    } 

    public ActionResult About() 
    { 
     return View(); 
    } 
} 
: 당신의 그것으로 컨트롤러와 사용자가 지정한 레이아웃을 사용하는이 컨트롤러를 withing에 (분명보기 결과를 반환) 모든 작업을 장식 한 후

public class LayoutAttribute : ActionFilterAttribute 
{ 
    private readonly string _layout; 
    public LayoutAttribute(string layout) 
    { 
     _layout = layout; 
    } 

    public override void OnActionExecuted(ActionExecutedContext filterContext) 
    { 
     var result = filterContext.Result as ViewResult; 
     if (result != null) 
     { 
      result.MasterName = _layout; 
     } 
    } 
} 

관련 문제