web-dev-qa-db-ja.com

MVC2のHtml.Partial(view、model)とHtml.RenderPartial(view、model)の違い(ある場合)は何ですか?

返されるタイプと、もちろん違う方法で呼び出すという事実以外

<% 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);
    }
}
139
Stéphane

唯一の違いは、PartialMvcHtmlStringを返し、<%= %>内で呼び出す必要がありますが、RenderPartialvoidを返し、ビューに直接レンダリングすることです。 。

ソースコード を見ると、どちらも同じ内部メソッドを呼び出して、レンダリング用のStringWriterを渡していることがわかります。

生成されたHTMLをページに書き込むのではなく、表示、保存、または操作する場合は、Partialを呼び出します。

166
SLaks

HTML.RenderPartialは、他のほとんどのヘルパーメソッドのようにHTMLマークアップを返しません。代わりに、このメソッドはコンテンツを応答ストリームに直接書き込むため、開発者はセミコロンを使用してC#の行全体のようにコンテンツを呼び出す必要があります。とにかく応答ストリームに書き込まれるので、これはレンダリングされたHTMLを部分ビューからバッファするよりもわずかに効果的です。

3
StepUp