В чем разница (если есть) между Html.Partial(view, model) и Html.RenderPartial(view, model) в MVC2?
Помимо типа, который он возвращает, и того факта, что вы называете это иначе,
<% 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);
}
}
Ответы
Ответ 1
Единственное отличие состоит в том, что Partial
возвращает MvcHtmlString
и должен быть вызван внутри <%= %>
, тогда как RenderPartial
возвращает void
и отображает непосредственно в представление.
Если вы посмотрите на исходный код, вы увидите, что они оба называют один и тот же внутренний метод, передавая StringWriter для его отображения к.
Вы бы назвали Partial
, если хотите просмотреть, сохранить или обработать сгенерированный HTML вместо того, чтобы записывать его на страницу.
Ответ 2
HTML.RenderPartial не возвращает HTML-разметку, как большинство других вспомогательных методов. Вместо этого метод записывает контент непосредственно в поток ответов, поэтому разработчик должен вызывать его как целую строку С#, используя точку с запятой. Это немного более эффективно, чем буферизация обработанного HTML из частичного представления, так как в любом случае он будет записан в поток ответов.