Come specificare gli attributi dei dati in razor, ad esempio, data-externalid = "23151" su @ this.Html.CheckBoxFor (...)


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

Con razor, non sono in grado di specificare valori per attributi di dati come data-externalid="23521"

C'è un modo per farlo usando @this.Html.CheckBoxFor(...)?

Risposte:


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

Il _verrà automaticamente convertito -nel markup risultante:

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

E questo è vero per tutti gli helper Html che prendono htmlAttributescome argomento un oggetto anonimo, non solo l' CheckBoxForhelper.


4
wow, posso vedere che la conversione '_' '-' è davvero confusa ... specialmente se qualcuno fa una ricerca di stringa alla ricerca di un dato attributo di dati. C'è un altro modo?
RayLoveless

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

1
E se hai bisogno che il valore provenga dal tuo ViewModel; new { @class = "myCheckBox", data_externalid = Model.ExternalId }Sono venuto a cercare aiuto su questo argomento e questo era ciò di cui avevo bisogno. :)
Scott Fraley

Oltre 8 anni dopo, questa risposta mi ha aiutato moltissimo. Non sono riuscito a capire perché l'aggiunta del mio tag v-model vue form non avrebbe funzionato. Ho dovuto usare v_model = "blah" invece.
Andrew Junior Howard
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.