Html.RenderPartial("")与Html.Partial("")区别
这个HtmlHelper的扩展方法Partial,和HtmlHelper自带的 RenderPartial功能比较接近,
两者都可以输出一个Partial视图;其区别如下:
<一>. Partial有返回值(MvcHtmlString);RenderPartial没有返回值(Void)。
1 //定义 1 //PartialExtensions.Partial 方法 (HtmlHelper, String) 2 public static MvcHtmlString Partial( 3 this HtmlHelper htmlHelper, 4 string partialViewName 5 ) 6 7 //RenderPartialExtensions.RenderPartial 方法 (HtmlHelper, String) 8 public static void RenderPartial( 9 this HtmlHelper htmlHelper, 10 string partialViewName 11 )
<二>不过Partial是将视图内容直接生成一个字符串并返回,RenderPartial方法是直接输出至当前 HttpContext。因此它们在视图中的使用方式是不同的,
Partial输出到临时变量StringWriter ;RenderPartial输出到HtmlHelper.ViewContext.Writer上(即直接输出到Response)。
1 Html.Partial内部实现public static MvcHtmlString Partial(this HtmlHelper htmlHelper, string partialViewName) 2 { 3 return htmlHelper.Partial(partialViewName, null, htmlHelper.ViewData); 4 } 5 6 7 public static MvcHtmlString Partial(this HtmlHelper htmlHelper, string partialViewName, object model, ViewDataDictionary viewData) 8 { 9 using (StringWriter writer = new StringWriter(CultureInfo.CurrentCulture)) 10 { 11 htmlHelper.RenderPartialInternal(partialViewName, viewData, model, writer, ViewEngines.Engines); 12 return MvcHtmlString.Create(writer.ToString()); 13 } 14 } 15 --------------------------------------------------------------------------------- 16 public static void RenderPartial(this HtmlHelper htmlHelper, string partialViewName) 17 { 18 htmlHelper.RenderPartialInternal(partialViewName, htmlHelper.ViewData, null, htmlHelper.ViewContext.Writer, ViewEngines.Engines); 19 }
<三>在Razor视图中语法不一样:
@Html.Partial("PartialViewName") @{ Html.RenderPartial("PartialViewName"); }