Razor를 뷰 엔진으로 사용하는 MVC3 사이트가 있습니다. 내 사이트를 스키닝 할 수 있기를 원합니다. 가능한 대부분의 스킨은 공유 마스터 레이아웃에서 파생 될 수있을 정도로 유사합니다.
따라서이 디자인을 고려하고 있습니다.
그러나 RenderSection
맨 아래 레이어에서을 호출 _Common.cshtml
하고 맨 위 레이어에 정의 된 섹션을 렌더링하도록하고 싶습니다 Detail.cshtml
. 이것은 작동하지 않습니다. RenderSection
분명히 다음 레이어에 정의 된 섹션 만 렌더링합니다.
물론 각 스킨의 각 섹션을 정의 할 수 있습니다. 예를 들어에 정의 된 섹션 _Common
을 호출해야하는 경우 각 RenderSection("hd")
섹션에 Detail
배치하면 다음 _Skin
과 같이 작동합니다.
@section hd {
@RenderSection("hd")
}
이로 인해 코드가 일부 중복되고 (이제 각 스킨에 동일한 섹션이 있어야하므로) 일반적으로 지저분하게 느껴집니다. 나는 아직 Razor를 처음 사용하고 있으며 분명한 것을 놓친 것 같습니다.
디버깅 할 때 WebViewPage.SectionWritersStack에서 정의 된 섹션의 전체 목록을 볼 수 있습니다. 포기하기 전에 전체 목록을 살펴 보도록 RenderSection에 지시 할 수 있다면 필요한 섹션을 찾을 수 있습니다. 아아, SectionWritersStack은 비공개입니다.
또는 레이아웃 페이지의 계층 구조에 액세스하고 서로 다른 컨텍스트에서 RenderSection 실행을 시도 할 수 있다면 필요한 섹션을 찾을 수 있습니다. 나는 아마도 뭔가를 놓치고 있지만 이것을 할 방법이 없다고 생각합니다.
이미 설명한 방법 외에이 목표를 달성 할 수있는 방법이 있습니까?