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"); }
View Code

 

posted @ 2017-07-03 17:52  FelixWang  阅读(188)  评论(0编辑  收藏  举报