답변:
Html.Partial
문자열을 반환합니다. 내부적으로 Html.RenderPartial
호출 Write
하고를 반환합니다 void
.
기본 사용법은 다음과 같습니다.
// Razor syntax
@Html.Partial("ViewName")
@{ Html.RenderPartial("ViewName"); }
// WebView syntax
<%: Html.Partial("ViewName") %>
<% Html.RenderPartial("ViewName"); %>
위의 스 니펫에서 두 호출 모두 동일한 결과를 생성합니다.
의 출력을 Html.Partial
변수에 저장하거나 메서드에서 반환 할 수 있지만이 작업을 수행 할 수는 없습니다Html.RenderPartial
.
Response
실행 / 평가 중에 결과가 스트림에 기록됩니다 .
이는 Html.Action
및에 적용됩니다 Html.RenderAction
.
Html.Partial()
Razor와보다 유창한 구문을 갖도록 만들어졌습니다. @Vlad가 말했듯 Html.RenderPartial()
이 더 효율적입니다.
@ Html.Partial을 부모 페이지에 복사 된 HTML 코드로 생각하십시오. @ Html.RenderPartial을 부모 페이지에 통합 된 .ascx 사용자 정의 컨트롤이라고 생각하십시오. .ascx 사용자 정의 컨트롤에는 훨씬 더 많은 오버 헤드가 있습니다.
'@ Html.Partial' 은 부모와 함께 인라인으로 구성된 html 인코딩 문자열을 반환합니다. 부모의 모델에 액세스합니다.
'@ Html.RenderPartial' 은 .ascx 사용자 정의 컨트롤과 동일한 기능을 반환합니다. 자체 페이지의 ViewDataDictionary 복사본을 가져오고 RenderPartial의 ViewData에 대한 변경 내용은 부모의 ViewData에 영향을 미치지 않습니다.
반사를 사용하여 다음을 찾습니다.
public static MvcHtmlString Partial(this HtmlHelper htmlHelper, string partialViewName, object model, ViewDataDictionary viewData)
{
MvcHtmlString mvcHtmlString;
using (StringWriter stringWriter = new StringWriter(CultureInfo.CurrentCulture))
{
htmlHelper.RenderPartialInternal(partialViewName, viewData, model, stringWriter, ViewEngines.Engines);
mvcHtmlString = MvcHtmlString.Create(stringWriter.ToString());
}
return mvcHtmlString;
}
public static void RenderPartial(this HtmlHelper htmlHelper, string partialViewName)
{
htmlHelper.RenderPartialInternal(partialViewName, htmlHelper.ViewData, null, htmlHelper.ViewContext.Writer, ViewEngines.Engines);
}
Partial
버퍼에 렌더링이 비동기 적으로 렌더링 된 것 의미하지 않는다 - 정반대을 - 당신이 주장 할 수있는 방법을 볼 수없는 것은 RenderPartial
"더 많은 리소스를 많이"입니다.
내가 찾은 것은 다음과 같습니다.
뷰로 전송할 모델이없고 변수에 저장할 필요가없는 html이 많은 경우 RenderAction을 사용하십시오 .
뷰로 전송할 모델이없고 변수에 저장해야 할 텍스트가 약간있을 때 동작을 사용하십시오 .
뷰로 전송할 모델이 있고 변수에 저장할 필요가없는 많은 HTML이있을 때 RenderPartial을 사용하십시오 .
뷰로 전송할 모델이 있고 변수에 저장해야 할 텍스트가 약간있을 때 부분을 사용하십시오 .
RenderAction 과 RenderPartial 이 더 빠릅니다.
@Html.Partial
그리고 @Html.RenderPartial
당신의 부분보기 모델은 상위 모델의 대응이 때 사용되는, 우리는이를 호출 할 조치 방법을 만들 필요가 없습니다.
@Html.Action
그리고 @Html.RenderAction
당신의 부분보기 모델은 상위 모델로부터 독립 할 때 페이지에있는 모든 위젯 유형의 컨텐츠를 표시 할 때 기본적으로 사용되는 사용됩니다. 보기에서 메소드를 호출하는 동안 부분보기 결과를 리턴하는 조치 메소드를 작성해야합니다.
의 반환 형식 Html.RenderAction
입니다 void
직접적의 반환 형식이보기에 응답 렌더링 수단 있다는 Html.Action
것이다 MvcHtmlString
당신은 컨트롤러의 렌더링 뷰를 잡아 다음과 같은 방법을 사용하여 수정할 수 있습니다
protected string RenderPartialViewToString(string viewName, object model)
{
if (string.IsNullOrEmpty(viewName))
viewName = ControllerContext.RouteData.GetRequiredString("action");
ViewData.Model = model;
using (StringWriter sw = new StringWriter())
{
ViewEngineResult viewResult = ViewEngines.Engines.FindPartialView(ControllerContext, viewName);
ViewContext viewContext = new ViewContext(ControllerContext, viewResult.View, ViewData, TempData, sw);
viewResult.View.Render(viewContext, sw);
return sw.GetStringBuilder().ToString();
}
}
뷰의 HTML 문자열을 반환합니다.
이는 Html.Partial
및Html.RenderPartial
차이점 :
의 반환 형식 RenderPartial
입니다 void
곳으로, Partial
반환MvcHtmlString
Razor보기에서 호출 Partial()
및 RenderPartial()
메소드에 대한 구문
@ Html.Partial ( "PartialViewName")
@ { Html.RenderPartial ( " PartialViewName"); }
웹폼보기에서 호출 Partial()
및 RenderPartial()
메소드에 대한 구문
[% : Html.Partial ( "PartialViewName") %]
[% Html.RenderPartial ( "PartialViewName"); %]
다음은 관련이 개 일반적인 면접 질문들 Partial()
과 RenderPartial()
언제 사용하는 것이 Partial()
이상 RenderPartial()
반대와 반대?
가장 큰 차이점은 RenderPartial()
void 를 반환하고 출력이 출력 스트림에 직접 기록된다는 것입니다. 여기서 Partial()
메소드가 반환 MvcHtmlString
할 때 변수에 할당하고 필요한 경우 조작 할 수 있습니다. 따라서 출력을 조작하기 위해 변수에 출력을 할당해야하는 경우 Partial ()을 사용하고 그렇지 않으면 RenderPartial ()을 사용하십시오.
어느 것이 성능에 더 좋습니까?
성능 관점에서 출력 스트림으로 직접 렌더링하는 것이 좋습니다. RenderPartial()
정확히 같은 기능을 수행하며 성능이 향상됩니다 Partial()
.