So geben Sie Datenattribute in razor an, z. B. data-externalid = "23151" auf @ this.Html.CheckBoxFor (…)

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

Mit Razor kann ich keine Werte für Datenattribute wie angeben data-externalid="23521"

Gibt es eine Möglichkeit, dies mit zu tun @this.Html.CheckBoxFor(...)?

Ian Davis
quelle

Antworten:

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

Das _wird automatisch -in das resultierende Markup konvertiert :

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

Dies gilt für alle HTML-Helfer, die ein htmlAttributesanonymes Objekt als Argument verwenden, nicht nur für den CheckBoxForHelfer.

Darin Dimitrov
quelle
4
Wow, ich kann sehen, dass die Konvertierung '_' '-' wirklich verwirrend ist ... besonders wenn jemand eine Zeichenfolgensuche durchführt, um nach einem bestimmten Datenattribut zu suchen. Gibt es eine andere Art und Weise?
RayLoveless
5
Transformieren Sie einfach Folgendes: new {data_test = "true"}) -> new Dictionary <string, object> {{"data-test", "true"}});
Dominique Alexandre
1
Und wenn Sie den Wert benötigen, der von Ihrem ViewModel stammt; new { @class = "myCheckBox", data_externalid = Model.ExternalId }Ich suchte Hilfe zu diesem Thema und das war es, was ich brauchte. :)
Scott Fraley
Über 8 Jahre später hat mir diese Antwort gerade massiv geholfen. Ich konnte nicht herausfinden, warum das Hinzufügen meines Vue-Formular-V-Modell-Tags nicht funktioniert. Ich musste stattdessen v_model = "blah" verwenden.
Andrew Junior Howard