ActionLink htmlAttributes

87

TRABAJOS

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

NO FUNCIONA - ¿POR QUÉ?

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

¿Parece que no puede pasar algo como data-icon = "gear" en htmlAttributes?

Sugerencias

Pavel Hlobil
fuente

Respuestas:

203

El problema es que la propiedad de su objeto anónimo data-icontiene un nombre no válido. Las propiedades de C # no pueden tener guiones en sus nombres. Hay dos formas de evitarlo:

Utilice un guión bajo en lugar de un guión (MVC reemplazará automáticamente el guión bajo con un guión en el HTML emitido):

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

Use la sobrecarga que toma en un diccionario:

@Html.ActionLink("Edit", "edit", "markets",
      new { id = 1 },
      new Dictionary<string, object> { { "class", "ui-btn-right" }, { "data-icon", "gear" } });
maridar
fuente
2
El guión bajo no parece funcionar con Ajax.ActionLinkayudantes
Dmitry Efimenko
1
El truco de subrayado suena realmente extraño, ¿qué pasa si quieres un subrayado en tu atributo html?
Michiel
1
@MichielReyers que podrían usar la sobrecarga que lleva en el diccionario
marcind
1
Los .net Core Tag Helpers destruyen todos estos problemas, hola desde el futuro.
niico
26

Reemplace el guión deseado con un guión bajo; se representará automáticamente como un guión:

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

se convierte en:

<form action="markets/Edit/1" class="ui-btn-right" data-icon="gear" .../>
cáñamo
fuente
-6
@Html.ActionLink("display name", "action", "Contorller"
    new { id = 1 },Html Attribute=new {Attribute1="value"})
amirhossein fallahmanesh
fuente