[.net] Html.Partial vs Html.RenderPartial & Html.Action vs Html.RenderAction

ASP.NET MVC에서 차이점은 무엇입니까?

  • Html.PartialHtml.RenderPartial
  • Html.ActionHtml.RenderAction


답변

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을 부모 페이지에 복사 된 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);
}


답변

내가 찾은 것은 다음과 같습니다.

뷰로 전송할 모델이없고 변수에 저장할 필요가없는 html이 많은 경우 RenderAction을 사용하십시오 .

뷰로 전송할 모델이없고 변수에 저장해야 할 텍스트가 약간있을 때 동작을 사용하십시오 .

뷰로 전송할 모델이 있고 변수에 저장할 필요가없는 많은 HTML이있을 때 RenderPartial을 사용하십시오 .

뷰로 전송할 모델이 있고 변수에 저장해야 할 텍스트가 약간있을 때 부분을 사용하십시오 .

RenderActionRenderPartial 이 더 빠릅니다.


답변

차이점은 첫 번째 는 응답에 직접 MvcHtmlString두 번째 ( Render..) 출력을 반환한다는 것 입니다.


답변

저에 따르면 Html @Html.RenderPartial()보다 실행 속도가 빠릅니다 @Html.Partial().RenderPartial은 출력에 대한 빠른 응답을 제공합니다.

을 (를) 사용할 때 @Html.Partial()웹 사이트를로드하는 데 시간이 더 걸리기 때문에@Html.RenderPartial()


답변

@Html.Partial그리고 @Html.RenderPartial당신의 부분보기 모델은 상위 모델의 대응이 때 사용되는, 우리는이를 호출 할 조치 방법을 만들 필요가 없습니다.

@Html.Action그리고 @Html.RenderAction당신의 부분보기 모델은 상위 모델로부터 독립 할 때 페이지에있는 모든 위젯 유형의 컨텐츠를 표시 할 때 기본적으로 사용되는 사용됩니다. 보기에서 메소드를 호출하는 동안 부분보기 결과를 리턴하는 조치 메소드를 작성해야합니다.


답변

질문에 대한 자세한 내용 :

“Html.RenderPartial ()을 부분 뷰의 이름으로 만 호출하면 ASP.NET MVC는 호출 뷰 템플릿에서 사용하는 것과 동일한 Model 및 ViewData 사전 개체를 부분 뷰로 전달합니다.”

Professional ASP.NET MVC 1.0의“NerdDinner”