Como especificar atributos de dados no razor, por exemplo, data-externalid = "23151" em @ this.Html.CheckBoxFor (…)


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

Com o razor, não consigo especificar valores para atributos de dados como data-externalid="23521"

Existe uma maneira de fazer isso usando @this.Html.CheckBoxFor(...)?

Respostas:


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

O _será automaticamente convertido -na marcação resultante:

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

E isso é verdade para todos os auxiliares de HTML que tomam um htmlAttributesobjeto anônimo como argumento, não apenas o CheckBoxForauxiliar.


4
uau, eu posso ver a conversão '_' '-' realmente confusa ... especialmente se alguém fizer uma pesquisa de string procurando um determinado atributo de dados. Existe outro caminho?
RayLoveless

5
Basta transformar isso: new {data_test = "true"}) -> new Dictionary <string, object> {{"data-test", "true"}});
Dominique Alexandre

1
E se você precisar do valor do seu ViewModel; new { @class = "myCheckBox", data_externalid = Model.ExternalId }Eu vim procurando ajuda sobre esse tópico e era disso que eu precisava. :)
Scott Fraley

Mais de oito anos depois, essa resposta me ajudou muito. Eu não conseguia entender por que adicionar minha tag vue form v-model não funcionaria. Eu tive que usar v_model = "blah".
Andrew Junior Howard
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.