1. ホーム
  2. asp.net

[解決済み] MVC2のHtml.Partial(view, model)とHtml.RenderPartial(view,model)の違いは何ですか?

2022-05-31 10:57:26

質問

もちろん、返す型と呼び方が違うということ以外に

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

どのように解決するのですか?

唯一の違いは PartialMvcHtmlString の中で呼び出されなければならない。 <%= %> の中で呼ばれなければなりません。 RenderPartialvoid を返し、ビューに直接レンダリングします。

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

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