HTML5-Daten- * mit asp.net mvc TextboxFür HTML-Attribute

244

Wie füge ich data-*HTML-Attribute mit TextboxFor hinzu?

Folgendes habe ich derzeit:

@Html.TextBoxFor(model => model.Country.CountryName, new { data-url= Url.Action("CountryContains", "Geo") })

Wie Sie sehen, -verursacht das hier ein Problem data-url. Wie geht das um?

Shawn Mclean
quelle
Mögliches Duplikat von HTML-Attributen mit Bindestrich mit asp.net mvc
ED-209

Antworten:

417

Sie könnten Unterstrich ( _) verwenden und der Helfer ist intelligent genug, um den Rest zu erledigen:

@Html.TextBoxFor(
    model => model.Country.CountryName, 
    new { data_url = Url.Action("CountryContains", "Geo") }
)

Und für diejenigen, die dasselbe in Versionen vor ASP.NET MVC 3 erreichen möchten, könnten sie:

<%= Html.TextBoxFor(
    model => model.Country.CountryName, 
    new Dictionary<string, object> { 
        { "data-url", Url.Action("CountryContains", "Geo") } 
    }
) %>
Darin Dimitrov
quelle
8
Ist dieses Verhalten irgendwo angegeben :)?
Rookian
5
@ Ryan, nein, tut es nicht, weil es keinen Sinn macht, dafür zu arbeiten EditorFor. Der EditorFor-Helfer wird verwendet, um eine benutzerdefinierte HTML-Vorlage zu rendern, die dem angegebenen Typ entspricht. Eine Vorlage kann viele Elemente enthalten, daher ist es nicht wirklich sinnvoll, über Attribute in einer Vorlage zu sprechen. Natürlich können Sie jederzeit eine benutzerdefinierte Vorlage schreiben, die mit dem additionalViewDataParameter arbeitet, der an eine Editorvorlage übergeben werden kann, und diese einfach als Attribute in das entsprechende Eingabefeld ausgeben.
Darin Dimitrov
2
Nur um klar zu sein, hat das resultierende Markup einen Unterstrich und keinen Bindestrich. Der Satz "Sie könnten einen Unterstrich (_) verwenden und der Helfer ist intelligent genug, um den Rest zu erledigen", insbesondere der Teil über die angebliche Intelligenz ließ mich glauben, dass er automatisch konvertiert werden würde - aber das tut er nicht. HTML5 unterstützt -.
Alan Macdonald
2
@AlanMacdonald the _wird -in ältere (mittlere?) Versionen von MVC konvertiert . Es kann sein, dass die neuesten Versionen es gelöscht haben, aber ich verwende es erfolgreich auf MVC 3 und 4.
Brichins
4
@AlanMacdonald (und andere lesen), das _wird auch -in MVC 5 konvertiert . Ich benutze es erfolgreich in einem Projekt, an dem ich gerade arbeite, das MVC 5 verwendet.
Amy Barrett