이 글은 기계 번역의 미러 문서이며, 원본 기사로 바로 이동하려면 여기를 클릭해 주세요.

보기: 13486|회답: 0

[ASP.NET] @RenderBody, @RenderSection, @RenderPage, Html.RenderPartial, Html.RenderActi...

[링크 복사]
게시됨 2015. 7. 19. 오후 11:37:53 | | |
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"); }문법이 더 쉽고 읽기 쉽기 때문이다. 그 외에는 기능 면에서 특별한 차이가 없는 것 같습니다.





이전의:로그인 대화상자를 띄우는 클릭 버튼이나 링크를 구현 ASP.NET----
다음:체크박스리스트를 줄을 감싸지 않도록 설정하세요
면책 조항:
Code Farmer Network에서 발행하는 모든 소프트웨어, 프로그래밍 자료 또는 기사는 학습 및 연구 목적으로만 사용됩니다; 위 내용은 상업적 또는 불법적인 목적으로 사용되지 않으며, 그렇지 않으면 모든 책임이 사용자에게 부담됩니다. 이 사이트의 정보는 인터넷에서 가져온 것이며, 저작권 분쟁은 이 사이트와는 관련이 없습니다. 위 내용은 다운로드 후 24시간 이내에 컴퓨터에서 완전히 삭제해야 합니다. 프로그램이 마음에 드신다면, 진짜 소프트웨어를 지원하고, 등록을 구매하며, 더 나은 진짜 서비스를 받아주세요. 침해가 있을 경우 이메일로 연락해 주시기 바랍니다.

Mail To:help@itsvse.com