Cómo especificar atributos de datos en razor, por ejemplo, data-externalid = "23151" en @ this.Html.CheckBoxFor (…)


122
@this.Html.CheckBoxFor(m => m.MyModel.MyBoolProperty, new { @class="myCheckBox", extraAttr="23521"})

Con razor, no puedo especificar valores para atributos de datos como data-externalid="23521"

¿Hay alguna forma de hacer esto usando @this.Html.CheckBoxFor(...)?

Respuestas:


268
@Html.CheckBoxFor(
    m => m.MyModel.MyBoolProperty, 
    new { 
        @class = "myCheckBox", 
        data_externalid = "23521"
    }
)

El _se convertirá automáticamente en -en el marcado resultante:

<input type="checkbox" name="MyModel.MyBoolProperty" data-externalid="23521" class="myCheckBox" />

Y eso es cierto para todos los ayudantes Html que toman un htmlAttributesobjeto anónimo como argumento, no solo el CheckBoxForayudante.


4
wow, puedo ver que la conversión '_' '-' es realmente confusa ... especialmente si alguien hace una búsqueda de cadena buscando un atributo de datos dado. ¿Hay otra manera?
RayLoveless

5
Simplemente transforme esto: new {data_test = "true"}) -> new Dictionary <string, object> {{"data-test", "true"}});
Dominique Alexandre

1
Y si necesita que el valor provenga de su ViewModel; new { @class = "myCheckBox", data_externalid = Model.ExternalId }Vine a buscar ayuda sobre este tema y esto era lo que necesitaba. :)
Scott Fraley

Más de 8 años después, esta respuesta me ha ayudado enormemente. No pude entender por qué agregar mi etiqueta vue form v-model no funcionaría. Tuve que usar v_model = "blah" en su lugar.
Andrew Junior Howard
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.