2010-11-05 12 views
74

OPEREActionLink 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> 

NON FUNZIONA - PERCHE '?

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

Sembra che non si possa passare qualcosa come data-icon = "gear" in htmlAttributes?

Suggerimenti?

risposta

175

Il problema è che la proprietà dell'oggetto anonimo data-icon ha un nome non valido. Le proprietà C# non possono contenere trattini nei loro nomi. Ci sono due modi per aggirare questo:

utilizzare una sottolineatura al posto del trattino (MVC sostituirà automaticamente la sottolineatura con un trattino nel codice HTML emessa):

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

Utilizzare il sovraccarico che prende in un dizionario:

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

Questo davvero mi ha aiutato - grazie. – Darbio

+3

Il trucco del trattino basso non sembra funzionare con MVC 2 –

+2

Il trattino basso non sembra funzionare con gli helper 'Ajax.ActionLink' – Dmitry

24

Sostituire il trattino desiderato con un trattino basso; esso verrà automaticamente visualizzato come un trattino:

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

diventa:

<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"}) 
Problemi correlati