В чем разница (если есть) между Html.Partial (вид, модель) и Html.RenderPartial (вид, модель) в MVC2? - PullRequest
137 голосов
/ 28 апреля 2010

Кроме типа, который он возвращает, и того факта, что вы называете его по-другому, конечно,

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

Ответы [ 2 ]

163 голосов
/ 28 апреля 2010

Единственное отличие состоит в том, что Partial возвращает MvcHtmlString и должен вызываться внутри <%= %>, тогда как RenderPartial возвращает void и отображает непосредственно в представление.

Если вы смотритев исходном коде вы увидите, что они оба вызывают один и тот же внутренний метод, передавая StringWriter для его визуализации.

Вы бы вызвали Partial, если хотите просмотреть, сохранять или манипулировать сгенерированным HTML вместо записи его на страницу.

3 голосов
/ 18 августа 2015

HTML.RenderPartial не возвращает разметку HTML, как большинство других вспомогательных методов.Вместо этого метод записывает содержимое непосредственно в поток ответов, поэтому разработчик должен вызывать его как целую строку C #, используя точку с запятой.Это немного более эффективно, чем буферизация визуализированного HTML-кода из частичного представления, так как он все равно будет записан в поток ответов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...