Html.RenderPartial("")与Html.Partial("")区别

这个HtmlHelper的扩展方法Partial,和HtmlHelper自带的 RenderPartial功能比较接近,html

 

二者均可以输出一个Partial视图;其区别以下:ide

<一>. Partial有返回值(MvcHtmlString);RenderPartial没有返回值(Void)。this

 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。所以它们在视图中的使用方式是不一样的,spa

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视图中语法不同:code

@Html.Partial("PartialViewName")
@{ Html.RenderPartial("PartialViewName"); }
View Code
相关文章
相关标签/搜索