asp.net mvc 부분뷰




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

HTML.RenderPartial은 다른 헬퍼 메소드처럼 HTML 마크 업을 반환하지 않습니다. 대신에이 메서드는 응답 스트림에 직접 내용을 씁니다. 따라서 개발자는 세미콜론을 사용하여 C #의 전체 행처럼 호출해야합니다. 이것은 렌더링 된 HTML을 부분 뷰에서 버퍼링하는 것보다 약간 효과적입니다. 어쨌든 응답 스트림에 기록되기 때문입니다.

그것이 반환하는 타입과 당신이 그것을 다르게 부른다는 사실 외에도

<% 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);
    }
}

유일한 차이점은 PartialMvcHtmlString 반환하고 <%= %> 내부에서 호출해야하지만 RenderPartialvoid 반환하고 뷰에 직접 렌더링한다는 것입니다.

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

생성 된 HTML을 페이지에 쓰는 대신보기, 저장 또는 조작하려는 경우 Partial 을 호출합니다.





asp.net-mvc-2