그것이 반환하는 유형과 당신이 그것을 다르게 부르는 사실 이외
<% 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을 페이지에 쓰지 않고 보거나 저장하거나 조작하려면 호출 합니다.
답변
두 방법의 차이점은 작고 무해 해 보일 수 있지만 처리 방법을 모른다면 물릴 수 있습니다. 두 방법의 주요 차이점은 다음과 같습니다.
Partial
HTML로 인코딩 된 문자열을 반환RenderPartial
A는 응답 출력 스트림에 직접 기록 보이드 방법.두 방법의 사용법은 약간 다릅니다.
@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
약간 빠르기 때문에
사용하는 것이 좋습니다.