返されるタイプと、もちろん違う方法で呼び出すという事実以外
<% 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);
}
}
唯一の違いは、Partial
はMvcHtmlString
を返し、<%= %>
内で呼び出す必要がありますが、RenderPartial
はvoid
を返し、ビューに直接レンダリングすることです。 。
ソースコード を見ると、どちらも同じ内部メソッドを呼び出して、レンダリング用のStringWriterを渡していることがわかります。
生成されたHTMLをページに書き込むのではなく、表示、保存、または操作する場合は、Partial
を呼び出します。
HTML.RenderPartialは、他のほとんどのヘルパーメソッドのようにHTMLマークアップを返しません。代わりに、このメソッドはコンテンツを応答ストリームに直接書き込むため、開発者はセミコロンを使用してC#の行全体のようにコンテンツを呼び出す必要があります。とにかく応答ストリームに書き込まれるので、これはレンダリングされたHTMLを部分ビューからバッファするよりもわずかに効果的です。