Html.Partial(view, model) 和 Html.RenderPartial(view,model) 在 MVC2 中的区别是什么(如果有的话)?
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日
两种方法之间的差异可能看起来很小,但如果不知道如何处理它,可能会咬你一口。两种方法之间的关键区别是:
Partial
返回一个HTML编码的字符串RenderPartial
是一个直接写入到响应输出流的空方法这两个方法的使用略有不同:
@Html.Partial("_yourPartialView") @{ Html.RenderPartial("_yourPartialView "); }
选择使用哪种方法取决于你的要求。如果你需要进一步操作注入到响应流中的字符串,应该使用
Partial
;否则,使用RenderPartial
,只是因为它直接进入流比Partial
稍微快一点。最后,部分视图的用例可以分为两个阵营。第一个是当你通过组合各种独立的标记来创建一个视图时,如下所示。
@{ Html.RenderPartial("_Header"); } @Html.Partial("_Sidebar") @RenderBody() @{ Html.RenderPartial("_Footer"); }
在这种情况下,选择
RenderPartial
或Partial
并不会改变最终效果。然而,因为RenderPartial
稍微快一些,所以你可能更喜欢使用它。
唯一的区别是Partial
返回一个MvcHtmlString
,必须在<%= %>
中调用,而RenderPartial
返回void
并直接呈现在视图中。
如果您查看源代码,您将看到它们都调用相同的内部方法,将一个StringWriter
传递给它进行呈现。
如果您想查看、保存或操作生成的HTML而不是将其写入页面,则会调用Partial
。