폴더 _ViewStart.cshtml
안에 파일을 넣고 /Views/Public
폴더의 기본 파일 을 무시 /Views
하고 원하는 레이아웃을 지정할 수 있습니다.
@{
Layout = "~/Views/Shared/_PublicLayout.cshtml";
}
유추 하여 다음과 _ViewStart.cshtml
같이 /Views/Staff
폴더 안에 다른 파일을 넣을 수 있습니다.
@{
Layout = "~/Views/Shared/_StaffLayout.cshtml";
}
컨트롤러 작업 내에서 뷰를 반환 할 때 사용해야하는 레이아웃을 지정할 수도 있지만 이는 작업 별입니다.
return View("Index", "~/Views/Shared/_StaffLayout.cshtml", someViewModel);
또 다른 가능성은 레이아웃을 재정의하는 사용자 지정 동작 필터입니다. 당신이 이것을 달성 할 수있는 많은 가능성을 볼 수 있듯이. 시나리오에 가장 적합한 것을 선택하십시오.
최신 정보:
의견 섹션에서 요청한대로 마스터 페이지를 선택하는 작업 필터의 예는 다음과 같습니다.
public class LayoutInjecterAttribute : ActionFilterAttribute
{
private readonly string _masterName;
public LayoutInjecterAttribute(string masterName)
{
_masterName = masterName;
}
public override void OnActionExecuted(ActionExecutedContext filterContext)
{
base.OnActionExecuted(filterContext);
var result = filterContext.Result as ViewResult;
if (result != null)
{
result.MasterName = _masterName;
}
}
}
그런 다음 원하는 레이아웃을 지정 하여이 사용자 정의 속성으로 컨트롤러 또는 작업을 장식하십시오.
[LayoutInjecter("_PublicLayout")]
public ActionResult Index()
{
return View();
}
Razor
뷰 의 레이아웃을 제거하려면 다음 과 같이 설정하십시오.Layout = null;