1. 렌더바디 Razor 엔진에는 "마스터 페이지"가 없으며, 대신 공유 뷰 폴더에 "layout"(_Layout.cshtml)이라는 페이지가 배치됩니다. 이 페이지에서는 태그에 다음과 같은 문구가 있습니다: @RenderBody() 사실, 마스터 페이지의 서버 제어와 유사하게 작동합니다. 레이아웃 페이지를 기반으로 한 뷰가 생성되면, 뷰의 내용이 레이아웃 페이지와 병합되고, 새로 생성된 뷰의 콘텐츠는 레이아웃 페이지의 @RenderBody() 메서드를 통해 라벨 간에 렌더링됩니다. 이 방법은 매개변수가 필요 없으며 한 번만 등장할 수 있습니다. 2. 렌더페이지 이름에서 짐작할 수 있듯이, 이 방법은 페이지를 제시하는 것입니다. 예를 들어, 웹 페이지의 고정 헤더는 공유 뷰 파일에 별도로 배치한 후, 레이아웃 페이지에서 다음과 같이 호출할 수 있습니다: @RenderPage("~/Views/Shared/_Header.cshtml") 매개변수와 함께 @RenderPage("~/Views/Shared/_Header.cshtml",new{parm="my",parm2="you") 매개변수를 확인하려면 해당 페이지에 전화하세요: RenderPage()에서 파라미터를 전달받아보세요. @PageData["param"] 3. 렌더 섹션 레이아웃 페이지에는 섹션이라는 개념도 포함되어 있는데, 뷰 템플릿에서 섹션이 정의되어 있다면 다음과 같이 별도로 표현할 수 있습니다: @RenderPage("~/Views/Shared/_Header.cshtml") @RenderBody()
//模板里添加了一个节 @RenderSection("머리") 물론, 뷰에서 섹션을 정의해야 합니다. 그렇지 않으면 예외가 발생합니다: @section 머리{
//do
} 섹션 누락으로 인한 예외를 방지하기 위해 RenderSection()에 두 번째 인자를 지정할 수 있습니다: @RenderSection("서브메뉴", 거짓) 또는 @if (IsSectionDefined("SubMenu"))
{ @RenderSection("서브메뉴", 거짓)
} 그렇지 않으면
{ <p>서브메뉴 섹션은 정의되어 있지 않습니다!</p>
}
4.@Html.Partial 부분 기능은 매번 자체 텍스트라이터 인스턴스를 생성하고 내용을 메모리에 캐시합니다. 마지막으로, 모든 라이터 출력을 MvcString 객체로 전송합니다 대부분의 경우, 우리는 @{ html.RenderPartial("details")을 사용합니다. @Html 대신 부분 RenderPage()와 RenderPartial()의 차이점. RenderPage() 호출은 데이터를 전달하는 데만 사용할 수 있습니다. RenderPartial()은 뷰데이터, 모델 및 기타 데이터를 사용할 수 있습니다. Html.RenderPartial 와 Html.RenderAction의 차이점 Html.RenderPartiaal은 반복 사용자 제어에 적합하며, 모델을 통해 콘텐츠를 렌더링하거나 광고용 사용자 제어에만 사용하면 됩니다. Html.RenderAction은 먼저 컨트롤러의 Action 메서드를 호출합니다. 이 UserControl이 데이터베이스에서 데이터를 받아 렌더링(액션을 통해 데이터베이스를 읽음)해야 할 경우, 이 방법이 이 시기에 더 적합합니다. 5.Html.Partial("MyView") 표준 라우팅 규칙에 따라 시도 스트림을 MvcHtmlString으로 반환합니다. "MyView" 뷰를 MvcHtmlString으로 렌더링합니다. 뷰 조회에 대한 표준 규칙(즉, 현재 디렉터리를 확인한 후 공유 디렉터리를 확인하는 것)을 따릅니다. Html.RenderPartial("MyView")
Html.Partial(과 비슷하게, 차이점은 캐싱 없이 페이지에 직접 입력된다는 점입니다. Html.Partial()과 동일하게 작동하지만, 출력을 응답 스트림에 직접 쓰는 방식입니다. 이는 뷰 콘텐츠가 메모리에 버퍼링되지 않기 때문에 더 효율적입니다. 하지만 메서드가 출력을 반환하지 않기 때문에 @Html.RenderPartial("MyView")는 작동하지 않습니다. 대신 코드를 코드 블록으로 랩해야 합니다: @{Html.RenderPartial("MyView"); }. RenderPage("MyView.cshtml")
경로, 파일 이름 등이 포함된 특수 뷰를 반환하며, Heml.RenderPartial()처럼 캐싱 없이 직접 출력합니다. 모델 변수는 전달할 수 있습니다. 지정된 뷰(뷰 이름이 아닌 경로와 파일 이름으로 식별됨)를 Html.RenderPartial(와 같이 )으로 직접 응답 스트림에 렌더링합니다. 뷰에 원하는 모델을 두 번째 매개변수로 포함시켜 제공할 수 있습니다 RenderPage("MyView.cshtml",MyModel)
저는 더 좋아요
@RenderPage("_LayoutHeader.cshtml")오버 @{Html.RenderPartial("_LayoutHeader"); }문법이 더 쉽고 읽기 쉽기 때문이다. 그 외에는 기능 면에서 특별한 차이가 없는 것 같습니다.
|