2010-11-05 1 views
74

WORKSActionhtmlattributes

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

nicht funktioniert - WARUM?

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

Es scheint, dass Sie nicht so etwas wie Daten-Symbol = „Gang“ in Htmlattributes passieren kann?

Vorschläge?

Antwort

175

Das Problem ist, dass Ihre anonyme Objekteigenschaft data-icon einen ungültigen Namen hat. C# -Eigenschaften dürfen keine Bindestriche in ihren Namen enthalten. Es gibt zwei Möglichkeiten, wie Sie rund um das zu bekommen:

einen Unterstrich Verwenden Sie statt Bindestrich (MVC wird den Unterstrich mit einem Schuss in den emittierten HTML automatisch ersetzen):

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

Verwenden Sie die Überladung, die in einem nimmt wörterbuch:

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

Das hat mir wirklich geholfen - danke. – Darbio

+3

Der Unterstrich scheint nicht mit MVC zu funktionieren 2 –

+2

Der Unterstrich scheint nicht mit 'Ajax.ActionLink' Helfern zu funktionieren – Dmitry

24

Den gewünschten Bindestrich durch einen Unterstrich ersetzen; es wird automatisch als Bindestrich wiedergegeben werden:

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

wird:

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