2016-10-07 111 views
0

假設有一個RenderPartial檢查某個條件是否爲true,然後呈現該頁面。檢查RenderPartial性能前後的條件

首先檢查條件是否有任何性能優勢,然後致電RenderPartial?我確信這項技術對RenderAction的性能有益,因爲我們基本上可以通過MVC生命週期步驟進行短路。但是我認爲自從RenderPartial「直接」出現以來,它可能沒有同樣的好處。


實施例(在檢查的RenderPartial條件):


myPage.cshtml

@model Namespace.AdObject 

@{ Html.RenderPartial("~/Views/Ad.cshtml", Model); } 

〜/查看/ Ad.cshtml

@model Namespace.AdObject 

@if (Model != null && Model.AdScript != null) 
{ 
    // render the ad 
} 

實施例(檢查條件的RenderPartial前):


myPage.cshtml

@model Namespace.AdObject 

@if (Model != null && Model.AdScript != null) 
{ 
    Html.RenderPartial("~/Views/Ad.cshtml", Model); 
} 

〜/查看/ Ad.cshtml

@model Namespace.AdObject 

// render the ad 
+0

我相信你所做的是正確的,渲染部分調用將不會被調用,直到條件爲真。 – Rex

回答

1

RenderPartial()是寫入響應輸出流的無效方法。 通過執行分部視圖生成的HTML輸出將呈現到調用(或父級)視圖中。即使如果型號爲null,寫入也會很耗時,並且會降低效率。因此,在性能方面,檢查RenderPartial之前的狀況會更好。

0

我想說檢查前的RenderPartial電話是更好的。即使您的Partial視圖很小,它仍然歸結爲對Web服務器中的.cshtml文件的額外文件系統IO調用,這是性能的瓶頸。當您首先檢查時,您可以一起避免IO呼叫。