MVC2中的Html.Partial(view,model)和Html.RenderPartial(view,model)之间有什么区别(如果有的话)?
除了它返回的types,以及当然你称之为不同的事实
<% 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); } }
唯一的区别是Partial
返回一个MvcHtmlString
,必须在<%= %>
调用,而RenderPartial
返回void
并直接呈现给视图。
如果你看源代码 ,你会看到他们都调用相同的内部方法,传递一个StringWriter来呈现。
如果要查看,保存或操作生成的HTML,而不是将其写入页面,则可以调用Partial
。
HTML.RenderPartial不像大多数其他帮助器方法那样返回HTML标记。 这个方法代替了将内容直接写入响应stream,这就是为什么开发者必须使用分号把它称为整个C#行的原因。 这比从部分视图中caching呈现的HTML稍微更有效,因为它将被写入响应stream。