Html.Partial(view, model) 和 Html.RenderPartial(view,model) 在 MVC2 中的区别是什么(如果有的话)?

22 浏览
0 Comments

Html.Partial(view, model) 和 Html.RenderPartial(view,model) 在 MVC2 中的区别是什么(如果有的话)?

除了它返回的类型和你调用它的方式不同,当然还有其他不同之处。

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

admin 更改状态以发布 2023年5月24日
0
0 Comments

这是 Dino Esposito 的一篇很好的说明:

两种方法之间的差异可能看起来很小,但如果不知道如何处理它,可能会咬你一口。两种方法之间的关键区别是:

  • Partial返回一个HTML编码的字符串
  • RenderPartial是一个直接写入到响应输出流的空方法

这两个方法的使用略有不同:

@Html.Partial("_yourPartialView")
@{ Html.RenderPartial("_yourPartialView "); }

选择使用哪种方法取决于你的要求。如果你需要进一步操作注入到响应流中的字符串,应该使用Partial;否则,使用RenderPartial,只是因为它直接进入流比Partial稍微快一点。

最后,部分视图的用例可以分为两个阵营。第一个是当你通过组合各种独立的标记来创建一个视图时,如下所示。


    @{ Html.RenderPartial("_Header"); }
    @Html.Partial("_Sidebar")
       @RenderBody()
    @{ Html.RenderPartial("_Footer"); }

在这种情况下,选择RenderPartialPartial并不会改变最终效果。然而,因为RenderPartial稍微快一些,所以你可能更喜欢使用它。

0
0 Comments

唯一的区别是Partial返回一个MvcHtmlString,必须在<%= %>中调用,而RenderPartial返回void并直接呈现在视图中。

如果您查看源代码,您将看到它们都调用相同的内部方法,将一个StringWriter传递给它进行呈现。

如果您想查看、保存或操作生成的HTML而不是将其写入页面,则会调用Partial

0