2012-03-12 32 views
7

我在創建HtmlHelper擴展方法。許多內置的框架方法支持HTMLAttributes(類型對象)這樣的參數,它們被渲染到最終的HTML上。我如何提供我自己的方法的重載,這些方法也支持htmlAttributes參數,而不必重寫字符串連接邏輯以將它們呈現爲標記上的屬性?如何在HtmlHelper擴展中支持htmlAttributes參數?

+0

你有什麼這麼遠嗎? – 2012-03-12 14:51:26

回答

17

HtmlHelper對象具有將對象轉換爲名稱/值字典的方法,您可以在構建標記時將它合併到標記中。例如,下面的代碼會生成一個<script>標籤與任何額外的屬性在傳遞:

var attributes = HtmlHelper.AnonymousObjectToHtmlAttributes(htmlAttributes) as IDictionary<string, object>; 

TagBuilder tag = new TagBuilder("script"); 
tag.MergeAttributes(attributes); 
tag.MergeAttribute("type", "text/javascript"); 
tag.MergeAttribute("src", scriptPath); 

您可以提供過載或使用默認值,爲htmlAttributes提供一個null值,這將產生一個空Dictionary

(該方法也進行消毒的屬性名稱爲有效的HTML屬性,等等。所以它的安全使用上幾乎任何對象。)

+0

哇,正是我所需要的。謝謝! – blaster 2012-03-13 15:09:34