2010-02-26 62 views
28

HTML5允許使用以「data-」爲前綴的自定義屬性,該屬性通過驗證而不使用自定義DTD(more info)。在Asp.Net MVC中,有沒有什麼方法可以指定帶有數據屬性的ActionLink?有沒有辦法用HTML 5數據屬性創建ActionLink?

添加屬性的ActionLink的典型方法是在一個匿名對象傳遞,爲每個對象的自定義屬性:

new { customattribute="value" } 

我想要做的是:

new { data-customattribute="value" } 

但這不起作用,因爲連字符在屬性名稱中無效。有沒有辦法解決這個限制?或者我只需要選擇使用ActionLinks和使用數據屬性?

回答

62

,或者您可以使用

new { data_customattribute="value" }

和編譯器是足夠聰明,知道你的意思

+1

這應該是被接受的答案。 – InfinitiesLoop 2011-04-01 03:40:44

+4

這隻適用於MVC3 +。 – 2011-05-25 18:16:20

+2

是的,以達到同樣的解決方案,在版本之前mvc3你應該使用@çağdaş解決方案 – 2011-05-26 17:34:03

20

是的,ActionLink方法有一個過載,它需要一個IDictionary<string,object>而不是一個匿名對象。

<%=Html.ActionLink("text", "Index", "Home", null /*routeValues*/, 
    new Dictionary<string, object> { 
     { "data-customattribute", "value" }, 
     { "data-another", "another-value" } 
    })%> 

輸出:

<a data-another="another-value" data-customattribute="value" href="/">text</a> 
+3

完美。請注意將來的讀者:如果對HTML屬性使用IDictionary,則還必須使用RouteDictionary作爲routeValues參數(您可以使用與上述HTML屬性相同的語法)。 – AaronSieb 2010-02-26 04:04:28

+2

MVC允許你使用下劃線來解決這個問題。 – Oliver 2012-06-06 08:47:22

相關問題