¿Cuál es la diferencia (si existe) entre Html.Partial (ver, modelo) y Html.RenderPartial (ver, modelo) en MVC2?

Aparte del tipo que devuelve y el hecho de que lo llames de manera diferente, por supuesto

  

Si son diferentes, ¿por qué llamarías a uno en lugar de a otro?
Las definiciones:

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

La única diferencia es que Partial devuelve un MvcHtmlString y debe llamarse dentro de <%= %> , mientras que RenderPartial devuelve void y se representa directamente en la vista.

Si miras el código fuente , verás que ambos llaman al mismo método interno, pasando un StringWriter para que se muestre.

Llamarías a Partial si quieres ver, guardar o manipular el HTML generado en lugar de escribirlo en la página.

HTML.RenderPartial no devuelve el marcado HTML como la mayoría de los otros métodos de ayuda. En lugar de, el método escribe contenido directamente en la secuencia de respuesta, por lo que el desarrollador debe llamarlo como una línea completa de C #, utilizando un punto y coma. Esto es un poco más efectivo que el almacenamiento en búfer del HTML representado desde la vista parcial, ya que se escribirá de todos modos en la secuencia de respuesta.