2010-11-05 52 views
74

WORKSActionLink的htmlAttributes

<a href="@Url.Action("edit", "markets", new { id = 1 })" 
      data-rel="dialog" data-transition="pop" data-icon="gear" class="ui-btn-right">Edit</a> 

不起作用 - 爲什麼?

@Html.ActionLink("Edit", "edit", "markets", new { id = 1 }, new {@class="ui-btn-right", data-icon="gear"}) 

看來你不能將類似data-icon =「gear」的東西傳遞給htmlAttributes?

對此提出建議?

回答

175

問題是您的匿名對象屬性data-icon的名稱無效。 C#屬性的名稱中不能有破折號。有兩種方法可以繞開這個問題:

使用,而不是短跑下劃線(MVC會自動在發出的HTML破折號替換下劃線):

@Html.ActionLink("Edit", "edit", "markets", 
     new { id = 1 }, 
     new {@class="ui-btn-right", data_icon="gear"}) 

使用接受的過載詞典:

@Html.ActionLink("Edit", "edit", "markets", 
     new { id = 1 }, 
     new Dictionary<string, object> { { "class", "ui-btn-right" }, { "data-icon", "gear" } }); 
+0

這真的幫了我 - 謝謝。 – Darbio 2011-09-19 02:29:40

+3

下劃線技巧似乎不適用於MVC 2 – 2012-04-03 20:43:26

+2

下劃線似乎不適用於「Ajax.ActionLink」助手 – Dmitry 2012-11-16 23:22:55

24

用下劃線替換所需的連字符;它會自動被渲染爲一個連字符:

@Html.ActionLink("Edit", "edit", "markets", 
    new { id = 1 }, 
    new {@class="ui-btn-right", data_icon="gear"}) 

變爲:

<form action="markets/Edit/1" class="ui-btn-right" data-icon="gear" .../> 
-4
@Html.ActionLink("display name", "action", "Contorller" 
    new { id = 1 },Html Attribute=new {Attribute1="value"})