Comment spécifier des attributs de données dans razor, par exemple, data-externalid = "23151" sur @ this.Html.CheckBoxFor (…)


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

Avec le rasoir, je ne peux pas spécifier de valeurs pour les attributs de données tels que data-externalid="23521"

Y a-t-il un moyen de faire cela en utilisant @this.Html.CheckBoxFor(...)?

Réponses:


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

Le _sera automatiquement converti en -dans le balisage résultant:

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

Et c'est vrai pour tous les helpers Html prenant un htmlAttributesobjet anonyme comme argument, pas seulement l' CheckBoxForassistant.


4
wow, je peux voir que la conversion '_' '-' est vraiment déroutante ... surtout si quelqu'un fait une recherche de chaîne à la recherche d'un attribut de données donné. Y a-t-il un autre moyen?
RayLoveless

5
Transformez simplement ceci: new {data_test = "true"}) -> new Dictionary <string, object> {{"data-test", "true"}});
Dominique Alexandre

1
Et si vous avez besoin que la valeur provienne de votre ViewModel; new { @class = "myCheckBox", data_externalid = Model.ExternalId }Je suis venu chercher de l'aide sur ce sujet et c'était ce dont j'avais besoin. :)
Scott Fraley

Plus de 8 ans plus tard, cette réponse vient de m'aider massivement. Je ne pouvais pas comprendre pourquoi l'ajout de ma balise vue form v-model ne fonctionnerait pas. J'ai dû utiliser v_model = "blah" à la place.
Andrew Junior Howard
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.