2013-01-15 26 views
4

對於給定的任務,使用HtmlHelper還是Partial是否存在性能差異?HtmlHelper的性能還是部分的

例如,我正在寫的HtmlHelper「控制」,以創建具有以下簽名的編輯鏈接:

public static HtmlString RecordNameLink(
     this HtmlHelper htmlHelper, 
     string linkText, 
     string editActionName, 
     object editRouteValues, 
     string deleteActionName = null, 
     object deleteRouteValues = null) 

在這種情況下,編輯按鈕將始終顯示和刪除按鈕只有包含時纔會顯示。或者,我可以這樣做:

@Html.Partial("Controls/RecordNameLink", Model) 

(或者通過部分特定型號)

但有一個理由選擇了另一種,特別是做一個有更好的表現比其他? (儘管我願意多瞭解一般差異)

謝謝。

回答

3

在MVC 3中,對於這種情況,使用html助手而不是Partial進行渲染的速度會更快。

做一個測試,在一個循環中渲染一個局部超過100次的部分,並且讓局部部分包含循環(部分渲染表的每行,部分渲染表的所有行)。結果你可能會很驚訝。

你的HTML助手將跳過對追捕部分的視圖引擎,在調用虛擬路徑提供加載它,等

+0

有趣的,謝謝。還有另一個HtmlHelper,我改變了幾乎在任何地方都使用的部分,而且該應用程序非常慢。我認爲這是因爲在域映射期間automapper從數據庫深度加載,但這也可能是一個罪魁禍首,所以我會看到將它切換回來。謝謝! – Dave

+0

您將看到的唯一地方是當您在給定頁面上進行了* ton *的給定部分渲染時。這並不是說偏色特別慢,它只是一個量的問題。 –

+0

是的,我只是重新檢查,我以前重構使用部分,只是稱爲HtmlHelper。由於某種原因,認爲它會「更合適」。在一個屏幕中,部分被稱爲1,169次! (會計報告,167個條目,每個有7個數字,部分/幫助者格式化數字的正面或負面,並在某些欄中將它們變成綠色或紅色)。所以是的,我認爲我的表現受到嚴重影響。 :)再次感謝,我現在正在清理它。哇,當我這樣做的時候,我很天真。 – Dave

相關問題