2012-05-26 3 views
27

저는 Asp.Net MVC3의 초보자입니다. 사람이 코드의 의미를 설명해 주시겠습니까 :이 렌더링 코드는 무엇을 의미합니까?

@section head 
{ 
    @RenderSection("head", false) 
} 

을 ScottGu의 기사에 :이 RenderSection의 예입니다 만

http://weblogs.asp.net/scottgu/archive/2010/12/30/asp-net-mvc-3-layouts-and-sections-with-razor.aspx

은 @section를 정의하고 어딘가에 @RenderSection가 사용됩니다. 이 경우 섹션 헤드가 정의되고 그 헤드 자체가 렌더링되어 나와 혼란스러워합니다.

RenderSection의 기능은 무엇이며 여기에서 렌더링되는 것을 어떻게 찾을 수 있습니까?

답변

34

스콧은 "RenderSection()"한 점

첫 번째 매개 변수에 쓴 도우미 방법은 우리가 레이아웃 템플릿에서 해당 위치에 렌더링 할 섹션의 이름을 지정합니다. 두 번째 매개 변수는 선택적이며 은 렌더링 할 섹션의 필요 여부를 정의 할 수 있습니다. 섹션이 "필수"인 경우 레이아웃 파일에서 섹션이 뷰 템플릿 내에 구현되지 않으면 레이아웃 파일에 ( 오류를 쉽게 추적 할 수 있음) 런타임에 오류가 발생합니다.

그래서 RenderSection은 템플릿/뷰 (일반 _Layout 아님)에 정의 된 섹션을 렌더링합니다. "뷰 템플릿의"SideBar "섹션 구현"에서 조금 더 자세히 살펴보고 섹션을 구현하는 방법을 설명합니다.

그래서 모두 아래쪽/내포 된보기에서 "머리"라는 섹션을 렌더링하는 "머리"섹션이 있습니다.

편집 : 중첩 된 뷰를 의미하는 것을 보려면 http://blogs.msdn.com/b/marcinon/archive/2010/12/15/razor-nested-layouts-and-redefined-sections.aspx을보십시오.하지만이 기사는 1 년 전입니다.

MasterLayout :

@RenderSection("head", false) 

SubLayout :

@{ 
    Layout = "~/Views/_MasterLayout.cshtml"; 
} 
@section head 
{ 
    RenderSection("head") 
} 

내용 :

@{ 
    Layout = "~/Views/_SubLayout.cshtml"; 
} 
@section head 
{ 
    <title>Content-Layout</title> 
} 
13

섹션을보기에 정의하고 _Layout.cshtml에 렌더링합니다.

레이아웃에서

에게 (마스터) 페이지 곳이 :

보기 페이지 장소에서
@RenderSection("head", false) 

이 :

여기
@section head { 

PUT VIEW SPECIFIC CODE HERE 
} 

"머리"당신이 정의 할 수 있습니다 섹션의 이름 당신의 보기 페이지.

우리가 asp.net webforms에서 사용하는 ContentPlaceHolder와 다소 비슷합니다.

+1

나는 그것을 이해하지만 게시 된 코드는 내부의 '@section'머리를 정의하고 교정기를 다시 호출 RenderSection. 하위 페이지에 '@section'머리말을 정의해서는 안됩니까? –

관련 문제