나가실 문은 오른쪽 하단입니다
1. 분석
asp.net MVC의 페이지 레이아웃 구조를 살펴보았는데,
부모 페이지와 자식 페이지의 관계의 구분이 처음 배우는 사람의 입장으로서 조금 혼란스럽게 되어있다.
우선 베이스 페이지가 되는 _Layout.cshtml에 대해 살펴보자.
이미지의 RenderBody라는 인터페이스를 virtual 키워드로 자식 페이지에서 상속받게 되어 있는데
이것을 만약에 연속적으로 상속 받을 경우 손자 페이지가 오버라이드 되어서
아빠 페이지의 내용이 무시 될 텐데, 어쩐지 무사히 아빠 페이지의 내용까지 잘 나온다.
즉 서브페이지 일 때, 같은 이름의 인터페이스를 상속 받는다면 불가능한 경우다.
이것에 대한 메커니즘을 알아보는 것은 귀찮다.
그래서 이것을 구현 한다면 페이지마다 이름이 다른 메서드를 상속받게 해야겠다.
만약 RenderBody를 호출 하면 실제로는 RenderBody_name 같이 말이다.
단순히 클래스 이름을 가져다 쓰면 될거 같지만, 다른 폴더에 동명이인이 존재할 수 도 있어서 클래스 이름 자체를 폴더 네임과 컴바인 해야 할 듯하다.
그리고 조금더 알아보니.. section이라는 키워드로 RenderBody를 완전히 대체할 수 있을 것으로 보인다.
2. 목업 코드
아래의 코드는 전체적인 계획을 반영 하였다.
cshtml 에서
페이지를 상속받는 구문은 @{Layout =???. cshtml}이고
페이지를 삽입하는 구문은 Html.Partial("???")인데 뭔가 일괄성이 떨어지는 거 같아 위의 코드처럼 변경할 계획이다.
ETC
cshtml이 실제로 어떻게 컴파일 되는지 알고 싶다면 아래의 링크로 들어가 가장 하단 부분을 살펴보면 된다.
http://taeyo.net/columns/View.aspx?SEQ=558&PSEQ=40&IDX=0
다음 계획은 이론은 여기서 끝내고 지금까지 정리한 내용을 토대로 코딩을 할 예정이다.
'C# > 근웹 연대기' 카테고리의 다른 글
c#으로 근본 없는 웹서버 개발기 22 : cshtml 파싱 - 공통클래스 (0) | 2022.01.16 |
---|---|
c#으로 근본 없는 웹서버 개발기 21 : cshtml 파싱 - tokenize (0) | 2022.01.13 |
c#으로 근본 없는 웹서버 개발기 19 : cshtml 파리미터 분석(이론) (0) | 2022.01.09 |
c#으로 근본 없는 웹서버 개발기 18 : cshtml 구문 분석(이론) (0) | 2022.01.08 |
c#으로 근본 없는 웹서버 개발기 17 : 서버페이지 렌더링 계획 (0) | 2022.01.07 |