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

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

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" .../>

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.