ASP에서 보기의 레이아웃(Master Page)을 변경합니다.재생성하지 않고 NET MVC
ASP를 쓰고 있습니다.레이저 뷰가 있는 NET MVC 3.뷰를 작성할 때 뷰에 대한 레이아웃(마스터 페이지)을 선택하거나 Default(_Layout)를 선택하도록 둘 수 있습니다.
이 레이아웃을 재생성하지 않고 뷰를 만든 후 변경하려고 하는데 뷰에 대한 레이아웃 정보를 저장할 수 있는 곳이 있습니까?어떻게 변경할 수 있습니까?
MVC3에서는_ViewStart.cshtml
모든 페이지의 레이아웃을 저장합니다. 이 요소를 변경하여 모든 페이지의 레이아웃을 변경하거나 의 대상 보기 페이지 상단에 새 레이아웃 요소를 추가할 수 있습니다.@{}
특정 페이지의 레이아웃을 변경하려면 다음과 같은 블록을 사용합니다.
@{
Layout = "~/Views/Shared/_newLayout.cshtml";
ViewBag.Title = "Index";
}
필요에 따라 뷰에 대해 다른 레이아웃을 지정하는 방법은 여러 가지가 있습니다.
보기에서
다른 답변에서 언급한 것처럼 보기의 내용을 변경하기만 하면 됩니다.Layout
속성:
@{
Layout = "~/Views/Shared/_CustomLayout.cshtml";
}
_ViewStart.cshtml에서
MVC 3이 기본값을 추가했습니다. Views/_ViewStart.cshtml
모든 보기에 공유되는 논리를 넣을 수 있습니다.추가로 생성할 수도 있습니다._ViewStart.cshtml
추가 사용자 지정 로직을 위해 보기 하위 디렉토리에 있는 파일(계층을 검색하고 를 검색합니다.Shared
다른 보기 또는 부분을 찾을 때와 마찬가지로 폴더를 선택합니다.
여기에 비즈니스 논리를 많이 넣는 것은 '관심사 분리' 원칙을 위반하는 것처럼 느껴지지만, 동시에 매우 편리할 수 있습니다.
참고:_ViewStart.cshtml
WebPage가 아닌 StartPage에서 상속하므로 속성이 사용자에게 익숙한 것과 약간 다를 수 있습니다(예: 사용자가 거쳐야 함).ViewContext
을 얻다ViewBag
).
@{
if (ViewContext.ViewBag.IsAdmin) // or other custom logic
{
Layout = "~/Views/Shared/_AdminLayout.cshtml";
}
else
{
Layout = "~/Views/Shared/_Layout.cshtml";
}
}
컨트롤러 작업에서
그View()
메서드는 명시적 레이아웃 페이지를 사용하는 오버로드가 있습니다(Intelisense는 이 페이지를 "마스터 페이지"라고 부릅니다).
public ActionResult FooAction()
{
var model = new MyModel();
return View("Index", "_CustomLayout", model);
}
cshtml 파일 상단에 보기를 작성한 후 레이아웃이 포함된 것을 볼 수 있습니다.
@{
Layout = "~/Views/Shared/_Layout.cshtml";
}
예를 들어 다른 레이아웃으로 간단히 교체할 수 있습니다.
@{
Layout = "~/Views/Shared/_Layout2.cshtml";
}
또한 이를 기본 레이아웃에 저장할 수 있습니다 (_ViewStart.cshtml
모든 보기에서 해당 레이아웃을 사용합니다.
아래 코드를 사용하여 _ViewStart 파일 내에서 레이아웃의 기본 렌더링을 변경할 수 있습니다.
@{
var controller = HttpContext.Current.Request.RequestContext.RouteData.Values["Controller"].ToString();
string layout = "";
if (controller == "Admin")
{
layout = "~/Views/Shared/_AdminLayout.cshtml";
}
else
{
layout = "~/Views/Shared/_Layout.cshtml";
}
Layout = layout;
}
언급URL : https://stackoverflow.com/questions/8516116/change-layoutmaster-page-of-view-in-asp-net-mvc-without-recreate-it
'programing' 카테고리의 다른 글
전원 셸에서 공백을 두 개 이상 제거하는 중 (0) | 2023.09.27 |
---|---|
URL 문자열이 절대적인지 또는 상대적인지 테스트하는 방법은 무엇입니까? (0) | 2023.09.27 |
Android 맵 API v2로 맞춤형 비트맵 마커를 만드는 방법 (0) | 2023.09.27 |
변경된 청취자 편집 텍스트에서 문자 수 계산 (0) | 2023.09.27 |
구글 웹 폰트를 CSS 파일로 가져오는 방법은? (0) | 2023.09.27 |