[asp.net] MVC2에서 Html.Partial (view, model)과 Html.RenderPartial (view, model)의 차이점은 무엇입니까?

그것이 반환하는 유형과 당신이 그것을 다르게 부르는 사실 이외

<% Html.RenderPartial(...); %>
<%= Html.Partial(...) %>  

서로 다른 경우 왜 다른 전화가 아닌 다른 전화를 하시겠습니까?
정의 :

// Type: System.Web.Mvc.Html.RenderPartialExtensions
// Assembly: System.Web.Mvc, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35
// Assembly location: C:\Program Files (x86)\Microsoft ASP.NET\ASP.NET MVC 2\Assemblies\System.Web.Mvc.dll

using System.Web.Mvc;

namespace System.Web.Mvc.Html
{
    public static class RenderPartialExtensions
    {
        public static void RenderPartial(this HtmlHelper htmlHelper, string partialViewName);
        public static void RenderPartial(this HtmlHelper htmlHelper, string partialViewName, ViewDataDictionary viewData);
        public static void RenderPartial(this HtmlHelper htmlHelper, string partialViewName, object model);

        public static void RenderPartial(this HtmlHelper htmlHelper, string partialViewName, object model,
                                     ViewDataDictionary viewData);
    }
}

// Type: System.Web.Mvc.Html.PartialExtensions
// Assembly: System.Web.Mvc, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35
// Assembly location: C:\Program Files (x86)\Microsoft ASP.NET\ASP.NET MVC 2\Assemblies\System.Web.Mvc.dll

using System.Web.Mvc;

namespace System.Web.Mvc.Html
{
    public static class PartialExtensions
    {
        public static MvcHtmlString Partial(this HtmlHelper htmlHelper, string partialViewName);

        public static MvcHtmlString Partial(this HtmlHelper htmlHelper, string partialViewName,
                                        ViewDataDictionary viewData);

        public static MvcHtmlString Partial(this HtmlHelper htmlHelper, string partialViewName, object model);

        public static MvcHtmlString Partial(this HtmlHelper htmlHelper, string partialViewName, object model,
                                        ViewDataDictionary viewData);
    }
}



답변

유일한 차이점은을 Partial반환하고 MvcHtmlString내부 <%= %>에서 호출 해야하는 반면 RenderPartial반환 void하고 뷰로 직접 렌더링한다는 것입니다.

소스 코드 를 보면 둘 다 동일한 내부 메소드를 호출하여 렌더링 할 StringWriter를 전달 함을 알 수 있습니다.

Partial생성 된 HTML을 페이지에 쓰지 않고 보거나 저장하거나 조작하려면 호출 합니다.


답변

이것은 Dino Esposito의 훌륭한 설명입니다.

두 방법의 차이점은 작고 무해 해 보일 수 있지만 처리 방법을 모른다면 물릴 수 있습니다. 두 방법의 주요 차이점은 다음과 같습니다.

  • Partial HTML로 인코딩 된 문자열을 반환
  • RenderPartialA는 응답 출력 스트림에 직접 기록 보이드 방법.

두 방법의 사용법은 약간 다릅니다.

@Html.Partial("_yourPartialView")
@{ Html.RenderPartial("_yourPartialView "); }

사용할 선택은 요구 사항에 따라 다릅니다. 응답 스트림에 주입되는 문자열을 추가로 조작해야하는 경우 Partial; 그렇지 않으면 RenderPartial
어떤 것만가집니다. 스트림보다 약간 빠릅니다 Partial.

결국, 부분 뷰의 유스 케이스는 두 캠프 중 하나에 해당합니다. 첫 번째는 아래와 같이 다양한 독립적 인 마크 업을 구성하여 뷰를 만드는 경우입니다.

<body>
    @{ Html.RenderPartial("_Header"); }
    @Html.Partial("_Sidebar")
    <div class="container body-content">
       @RenderBody()
    </div>
    @{ Html.RenderPartial("_Footer"); }
</body>

이 경우 최종 효과 중 하나를 선택 RenderPartial하거나
Partial변경하지 않습니다. 그러나 RenderPartial약간 빠르기 때문에
사용하는 것이 좋습니다.


답변