2010-12-21 2 views
85

하위 템플릿을 렌더링하는 적절한 방법은 무엇입니까?면도기 : @ Html.Partial() vs @RenderPage()

그 차이점은 무엇입니까? 둘 다 나를 위해 일하는 것 같습니다.

그리고 @Html.RenderPartial()은 왜 더 이상 작동하지 않습니까?

답변

115
Html.Partial("MyView") 

"MyView"보기를 MvcHtmlString으로 렌더링합니다. 조회 조회에 대한 표준 규칙 (즉, 현재 디렉토리를 확인한 다음 Shared 디렉토리를 확인)을 따릅니다.

Html.RenderPartial("MyView") 

응답 스트림에 출력을 직접 쓰는 점을 제외하면 Html.Partial()과 동일합니다. 뷰 내용이 메모리에 버퍼링되지 않기 때문에보다 효율적입니다. 그러나 메서드에서 아무런 결과도 반환하지 않으므로 @Html.RenderPartial("MyView")이 작동하지 않습니다. 대신 코드 블록 (@{Html.RenderPartial("MyView");})으로 호출을 래핑해야합니다.

RenderPage("MyView.cshtml") 

Html.RenderPartial() 같은 응답 스트림에 직접 (경로와 파일 이름보다는 뷰 이름에 의해 식별) 지정된 뷰를 렌더링. 당신은 두 번째 매개 변수

RenderPage("MyView.cshtml", MyModel) 
+8

@ Html.RenderPartial ("MyView")보다 @ {Html.RenderPartial ("MyView");}의 효율성 향상에 대한 측정 기준이 있습니까? – Faust

+0

당신은 Partial vd RenderPartial을 의미 했습니까? –

+1

@cacho : 내 의견은'@Html.Partial ("MyView")'와'@ {Html.RenderPartial ("MyView");}' – Faust

15

내가 선호

@RenderPage("_LayoutHeader.cshtml") 

@{ Html.RenderPartial("_LayoutHeader"); } 

이상 만 구문이 쉬우 며 더 읽을 수 있기 때문이다. 그 외에도 기능상 현명한 차이점이없는 것 같습니다.

편집 : RenderPartial의 장점 중 하나는 일반적인 장소를 자동으로 검색 할 전체 경로 또는 파일 확장자를 지정할 필요가 없다는 것입니다.

+1

이 답변에 대한 댓글이되어야한다고 생각합니다. 또한 문법 때문에'RenderPage'에 동의합니다. –

6

대부분의 다른 헬퍼 메소드와 같은 HTML 마크 업을 반환하지 않습니다 RenderPartial 방법으로 그것을 포함하여 당신이보기에 원하는 모델을 제공 할 수 있습니다. 대신 응답 스트림에 직접 내용을 작성하므로 세미콜론을 사용하여 완전한 C# 줄처럼 호출해야합니다.

렌더링 된 HTML을 부분보기에서 버퍼링하는 것보다 약간 더 효율적입니다. 어쨌든 응답 스트림에 기록되기 때문입니다. 좀 더 일관성있는 구문을 선호하는 경우, 당신은 이 RenderPartial 방법과 동일 않는 Html.Partial 방법을 사용하지만, HTML 조각을 반환하고 @ Html.Partial ("제품으로 사용할 수 있습니다 ", p).

2

부분 뷰를 사용하여 모델을 전달할 수도 있습니다. @ Html.Partial ("MyView", "MyModel");

0
@RenderPages() 

위의 코드는 ASP.NET MVC에서 작동하지 않습니다. 웹 페이지에서만 작동합니다.

@Html.Partial("_Footer") 

위의 코드는 ASP.NET MVC에서 사용해야합니다.