Html.RenderPartial和Html.Partial在Razor視圖中的區別


兩者都可以輸出一個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 "); }

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM