在 MVC2中,Html.part (视图,模型)和 Html.RenderPart (视图,模型)之间有什么区别(如果有的话) ?

当然,除了它返回的类型以及您调用它的方式不同之外

<% 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);
}
}
45731 次浏览

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

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

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

迪诺•埃斯波西托(Dino Esposito)给出了一个很好的解释:

这两种方法之间的区别可能看起来很小而且无害, 但如果你不知道如何处理它,它可能会咬你。钥匙 这两种方法的区别是:

  • Partial 返回 HTML 编码的字符串
  • RenderPartial直接写入响应输出流的 void 方法。

这两种方法的用法略有不同:

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

选择使用哪一个取决于您的需求。如果您需要 进一步操纵在响应中注入的字符串 流,则应使用 Partial; 否则使用 RenderPartial 因为它直接流向河流,所以会快一点 而不是 Partial

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

<body>
@{ Html.RenderPartial("_Header"); }
@Html.Partial("_Sidebar")
<div class="container body-content">
@RenderBody()
</div>
@{ Html.RenderPartial("_Footer"); }
</body>

在这种情况下,您在 RenderPartialPartial不会改变最终的效果。但是,因为 RenderPartial稍快一些,您可能更喜欢使用它。

部分渲染部分是扩展方法,是网页的可重用部分。渲染部分的返回类型为 void,其中 只有一部分返回 MvcHtmlString渲染动作将把结果直接呈现给响应流(更有效和快速) ,而 开始返回一个字符串(可以操纵)和结果。