2008-11-03 32 views
0

我創建的HTML幫助更好的實現Html Helper方法的方法?

Html.BreadCrumb(IDictionary<string, string> crumbs) 

當第一個字符串標籤和第二個字符串的URL。 助手創建所需的HTML(無序列表,一些類第一要素,目前的元素,最後一個元素,死元素和分隔符等) 所有工作不錯,但我通過創建一個StringBuilder,抽所有的HTML它做到這一點並以string的形式返回stringbuilder的內容。

我在這個例子中也不要緊,所有的東西,但如果HTML幫助中翻騰出什麼HTML的大負荷的身影?沒有辦法將它推送到Response.Write而不是一個stringbuilder?

還有其他問題/改進嗎?

+0

不IDictionary的保證訂貨?我以爲IList >會更合適嗎? – 2008-11-03 11:55:37

回答

1

當然可以使用Response.Write而不是返回一個字符串;有關示例,請參閱MVC源代碼中的System.Web.Mvc.Ajax.Form源代碼(位於AjaxExtensions.cs中)。

你再調用傭工<%,而不是<%=。

它會更快嗎?我懷疑它,但它很容易測試。

0

我不認爲你會不會有什麼性能問題,只要你生成HTML頁面的大小是合理的。當你真的開始創建大小爲MB的頁面時,你應該問自己,爲什麼你要創建如此龐大的HTML文件?

+0

有一些在那。但我仍然覺得這樣做會更好。不? – 2008-11-03 11:06:38

6

順便說一句,我們有不同的渲染技術,ASP.NET MVC命名模式。

返回字符串的幫助器應該被命名爲「它們是什麼」。例如,Url.Action()和Html.TextBox()返回這些確切的項目。因此,這些助手應與<%=%>語法一起使用。

直接渲染到輸出流的Helpers應該以渲染開始。例如,Html.RenderPartial()。這些與<%%>語法一起使用。使用IDisposable模式

助手應該開始/結束而得名。例如,Html.BeginForm()和Html.EndForm()。這些也應該與< %%>語法一起使用。

感謝, Eilon

+1

感謝稱重。歡迎來到SO。 – 2008-11-04 21:41:05