Bindestrich-HTML-Attribute mit asp.net mvc


111

Gibt es eine schönere Syntax beim Erstellen von Elementen mit getrennten Attributen, anstatt Folgendes zu verwenden:

<%= Html.TextBox ("name", value, new Dictionary<string, object> { {"data-foo", "bar"} }) %>

Wenn man sich die HTML-Spezifikationen für die vorgeschlagenen Standards HTML 5 und WIA ARIA ansieht , scheint es, dass Bindestriche in HTML-Attributen häufiger als eine Art einfacher Namensabstand geplant sind.

Beispielsweise schlägt HTML 5 vor, dass benutzerdefinierten Attributen ein Präfix vorangestellt wird data-und WIA ARIA das aria-Präfix für alle WIA ARIA-Attribute verwendet.

Bei Verwendung von HTML-Hilfsprogrammen in ASP.NET MVC wird beispielsweise <%= Html.TextBox("name", value, new { attribute = attributeValue }) %>das anonyme Objekt in ein Wörterbuch konvertiert.

Leider werden in C # keine Bindestriche in Namen unterstützt, daher besteht die einzige Alternative darin, ein Wörterbuch zu erstellen. Hat jemand eine schönere Alternative oder eine einfache Möglichkeit gesehen, die Funktionalität der HTML-Erweiterungen von ASP.NET MVC zu ändern, ohne die gesamte Erweiterung neu schreiben zu müssen?

Antworten:


202

Verwenden Sie einen Unterstrich im Namen des Datenattributs, und dieser behandelt ihn auf magische Weise und konvertiert ihn in einen Bindestrich. Es ist bekannt, dass Sie einen Bindestrich anstelle eines Unterstrichs wünschen, da Unterstriche in HTML-Attributnamen nicht gültig sind.

<%= Html.TextBox("name", value, new { @data_foo = "bar"}) %>

2
Ich habe in mehreren SO-Fragen ein ähnliches Problem gefunden, und dies ist die beste Antwort.
user2780436

Könnten Sie den Grund für Ihre Aussage hinzufügen? Unterstriche sind in HTML-Attributen nicht gültig . Mindestens in HTML 4.01 heißt es : Der Attributwert darf nur Buchstaben (az und AZ), Ziffern (0-9), Bindestriche (ASCII-Dezimalzahl 45), Punkte (ASCII-Dezimalzahl 46), Unterstriche (ASCII-Dezimalzahl 95) und Doppelpunkte ( ASCII Dezimalstelle 58) ,
Surfmuggle

@threeFourOneSixOneThree Ihr Zitat bezieht sich auf den Attributwert, aber in dieser Frage beziehen wir uns auf Attributnamen.
ED-209

@threeFourOneSixOneThree Ich habe das Ende meiner Antwort in "Unterstriche sind in HTML-Attributnamen nicht gültig" geändert
ED-209

19

Die Antwort bei ActionLink htmlAttributes schlägt vor, Unterstriche anstelle von Bindestrichen zu verwenden. MVC.Net soll beim Senden der Seite an den Browser Bindestriche anstelle der Unterstriche ausgeben.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.