안녕하세요. 지난시간까지는 MVC에 대한 골격에 대해 살펴보았는데요,


이번장에서는 실무에 적용하기 위한 필수적인 몇가지 부가기능에 대해서 알아보도록 하겠습니다.



1. Layout(MasterPage)


이전 ASP.NET 2.0 에 Master Page 라는 기능이 추가가 되었습니다. 이 기능은 중복되는 html 페이지의 헤더와 푸터와 같이 광범위하게 사용되는 부분을 공통적인 master Page 라는 하나의 aspx 페이지로 분리한 후 , 각각의 컨텐츠 페이지가 그 마스터페이지의 골격을 공유해서 사용하는 기능입니다. 이 기능이 탑제된 후 ASP.NET에서는 많은 코드량을 줄일수 있었으며 , 곧 ASP.NET 에서 효율적으로 개발을 하기 위한 하나의 공통적인 개발 방법론이 되었습니다. 이러한 편리한 기능인 마스터 페이지를 MVC 에서 사용할수 없다는건 말이 안되겠죠? MVC는 이전 ASP.NET보다도 더 쉬운 방법으로 마스터 페이지를 지원합니다. MVC에서는 또한 ViewBag 을 마스터페이지와 공유하는 것이 가능함으로써 , 개발에 있어서 더 큰 유연성을 제공합니다.
 

4_1.png
[그림 : 마스터페이지 레이아웃 페이지]

1.    보통 마스터페이지는 View 폴더 아래의 Shared 폴더에 추가하게 됩니다. 이곳에 마스터페이지를 추가합니다.


2.    이 마스터페이지를 다음과 같이 수정합니다.


<!DOCTYPE html>
<html>
<head>
    <title>@ViewBag.Title</title>
</head>
<body>
    <div>Header – 마스터페이지 테스트</div>
    <div>
        @RenderBody()
    </div>
    <div> Header – 마스터페이지 테스트 </div>
</body>
</html>

이곳에서 @RenderBody() 부분이 실제로 컨텐츠로 치환될 영역입니다. 뷰 페이지를 생성할 때 마스터 페이지를 생성하게되면 저 부분에 실제 컨텐츠가 체워지게 됩니다.



3.    3번째 글에서 작성했던 Home/Index.cshtml 페이지를 다음과 같이 수정합니다.



@{
    Layout = "~/Views/Shared/_LayoutMaster.cshtml";
    ViewBag.Title = "Index";
}
<h2>@ViewBag.HelloWorld</h2>

4.    
이제 실행결과를 확인해보겠습니다. 

4.2.png
붉은색으로 표시된 부분은 다른 페이지에서도 공유해서 쓸수있는 마스터페이지 컨텐츠 내용입니다.




2. Partial


파샬 컨트롤은이전 클래식 ASP.NET 에서 UserControl 과 같은 기능을 합니다. 이것은 View 페이지와 Master 페이지에 같이 사용될수 있습니다. ViewBag 을 공유하지만 이쉽게도 Model 은 공유하지 못합니다. 하지만 각각의 파샬뷰는 각각의 독립적인 Model 을 소유할수 있으며 , 이는 View 페이지에서 파샬 컨트롤을 렌더링할 때 넘겨줄수 있습니다.

1.    Shared 폴더에 Add->NewItem 으로 파샬 페이지를 두개 생성 합니다. 각각의 이름은 Header 과 Footer로 정의합니다.
2.    각각의 코드에 다음과 같은 코드를 삽입합니다.


<div>Header – 파샬페이지 테스트</div>
[Header.cshtml]

<div>Footer - 파샬페이지테스트</div>
[Footer.cshtml]

3._LayoutMaster.cshtml 의 코드를 다음과 같이 수정합니다.
<!DOCTYPE html>

<html>
<head>
    <title>@ViewBag.Title</title>
</head>
<body>
    @Html.Partial("Header")
    <div>
        @RenderBody()
    </div>
    @Html.Partial("Footer")
</body>
</html>


이제 실행시켜서 결과를 확인해봅니다.
 
4_3.png
결과값이 아까와 동일합니다. ^^;



Summary
파샬 컨트롤과 마스터페이지는 약간 복잡한 성격의 페이지에서 프로그램의 복잡도를 떨어뜨릴수 있는 아주 강력한 기본기능중에 하나입니다. 이는 MVC뿐 아닌 ASP.NET 프로그래밍의 기본이 되는 요소로써 , 필수적으로 습득해야할 기본지식이 됩니다. 다음 장에서는 Strong View 와 Partial Control 과의 연동에 대해서 알아보도록 하겠습니다.



ASP.NET MVC3 시리즈 강좌 리스트
[ASP.NET MVC3강좌] 1. MVC(Model- View – Controller) 란 무엇인가.
[ASP.NET MVC3강좌] 2. MVC 환경 세팅
[ASP.NET MVC3강좌] 3. HelloWorld MVC
[ASP.NET MVC3강좌] 4. Layout , Partial Page
[ASP.NET MVC3강좌] 5. Model 을 View에서 표현하기
[ASP.NET MVC3강좌] 6. MVC의 매력적인 기능 스캐폴딩!(With EF)
[ASP.NET MVC3강좌] 7. 유효성 검사
[ASP.NET MVC3강좌] 8. ModelBinder
[ASP.NET MVC3강좌] 9. MVC ActionResult 종류 살펴보기
[ASP.NET MVC3강좌] 10. MVC 처리 프로세스 & ActionFilter
[ASP.NET MVC3강좌] 11. Global.asax
[ASP.NET MVC3강좌] 12. (번외편) Repository Pattern
[ASP.NET MVC3강좌] 13. MEF(Managed Extensibility Framework) in MVC
[ASP.NET MVC3강좌] 14. Javascript in MVC
[ASP.NET MVC3강좌] 15. Javascript Intellicense in Visual Studio
[ASP.NET MVC3강좌] 16. JSON in MVC - 1
[ASP.NET MVC3강좌] 17. JSON in MVC - 2
[ASP.NET MVC3강좌] 18. HTML5 in MVC
[ASP.NET MVC3강좌] 19. MVC Tips 1 - HandleUnknownAction
[ASP.NET MVC3강좌] 20. MVC Tips 2 - Cache ActionFilter





profile

ASP.NET MVP 2009~2011