[转]Html.RenderPartial和Html.Partial在Razor视图中的区别_se7en3_新浪博客

两者都可以输出一个Partial视图;其区别如下:

1. Partial有返回值(MvcHtmlString);RenderPartial没有返回值(Void)。

 

定义   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 )

 

2. Partial输出到临时变量StringWriter ;RenderPartial输出到HtmlHelper.ViewContext.Writer上(即直接输出到Response)。

Html.Partial内部实现 public  static MvcHtmlString Partial( this HtmlHelper htmlHelper,  string partialViewName)
{
     return htmlHelper.Partial(partialViewName,  null, htmlHelper.ViewData);
}


public  static MvcHtmlString Partial( this HtmlHelper htmlHelper,  string partialViewName,  object model, ViewDataDictionary viewData)
{
     using (StringWriter writer =  new StringWriter(CultureInfo.CurrentCulture))
    {
        htmlHelper.RenderPartialInternal(partialViewName, viewData, model, writer, ViewEngines.Engines);
         return MvcHtmlString.Create(writer.ToString());
    }
}
 

 

Html.RenderPartial内部实现 1  public  static  void RenderPartial( this HtmlHelper htmlHelper,  string partialViewName)
2 {
3     htmlHelper.RenderPartialInternal(partialViewName, htmlHelper.ViewData,  null, htmlHelper.ViewContext.Writer, ViewEngines.Engines);
4 }

 

3. 在Razor视图中语法不一样:

语法 1 @Html.Partial( " PartialViewName ")
2 
3 @{ Html.RenderPartial( " PartialViewName "); }

 

在最近的工作中,用到@{Html.RenderPartial("_RoomBottom");}个别页面虽然断点已经进到里面,却无法输出,

改成@Html.Partial("_RoomBottom")之后输出正常。

 

转自 :http://www.th7.cn/Program/net/2012/03/20/65137.shtml

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值