Autre que le type qu'il retourne et le fait que vous l'appeliez différemment bien sûr
<% Html.RenderPartial(...); %>
<%= Html.Partial(...) %>
Si elles sont différentes, pourquoi voudriez-vous appeler l'une plutôt que l'autre?
Les définitions:
// 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 seule différence est que Partial
renvoie un MvcHtmlString
et doit être appelé à l'intérieur de <%= %>
, alors que RenderPartial
renvoie void
et rend directement à la vue.
Si vous regardez le code source , vous verrez qu'ils appellent tous les deux la même méthode interne, en transmettant un StringWriter pour qu'il le rende.
Vous devez appeler Partial
si vous souhaitez afficher, enregistrer ou manipuler le code HTML généré au lieu de l'écrire sur la page.
HTML.RenderPartial ne renvoie pas de balisage HTML comme la plupart des autres méthodes d'assistance. Au lieu de, la méthode écrit le contenu directement dans le flux de réponse, raison pour laquelle le développeur doit l'appeler comme une ligne entière de C #, à l'aide d'un point-virgule. Cela est légèrement plus efficace que la mise en mémoire tampon du rendu HTML à partir de la vue partielle, car il sera quand même écrit dans le flux de réponses.