ActionLink htmlAttributes


87

LAVORI

<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 - PERCHÉ?

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

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

Suggerimenti?

Risposte:


203

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

Utilizza un trattino basso invece del trattino (MVC sostituirà automaticamente il carattere di sottolineatura con un trattino nell'HTML emesso):

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

Usa il sovraccarico che accetta un dizionario:

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

2
La sottolineatura non sembra funzionare con gli Ajax.ActionLinkaiutanti
Dmitry Efimenko

1
Il trucco del trattino basso suona davvero strano, e se volessi un trattino basso nel tuo attributo html?
Michiel

1
@ MichielReyers potresti usare il sovraccarico che prende nel dizionario
marcind

1
.net Core Tag Helpers distrugge tutti questi problemi - ciao dal futuro.
niico

26

Sostituisci il trattino desiderato con un trattino basso; 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" .../>

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.