Ich versuche, HTML5-Datenattribute in meinem ASP.NET MVC 1-Projekt zu verwenden. (Ich bin ein C # - und ASP.NET MVC-Neuling.)
<%= Html.ActionLink("« Previous", "Search",
new { keyword = Model.Keyword, page = Model.currPage - 1},
new { @class = "prev", data-details = "Some Details" })%>
Die "Datendetails" in den obigen htmlAttributes geben den folgenden Fehler aus:
CS0746: Invalid anonymous type member declarator. Anonymous type members
must be declared with a member assignment, simple name or member access.
Es funktioniert, wenn ich data_details verwende, aber ich denke, es muss mit "data-" gemäß der Spezifikation beginnen.
Meine Fragen:
- Gibt es eine Möglichkeit, dies zum Laufen zu bringen und HTML5-Datenattribute mit Html.ActionLink oder ähnlichen Html-Helfern zu verwenden?
- Gibt es einen anderen alternativen Mechanismus, um benutzerdefinierte Daten an ein Element anzuhängen? Diese Daten sollen später von JS verarbeitet werden.
asp.net-mvc
html
custom-data-attribute
Shameem
quelle
quelle
Antworten:
Update: MVC 3 und neuere Versionen unterstützen dies bereits. In der hoch bewerteten Antwort von JohnnyO finden Sie empfohlene Lösungen.
Ich glaube nicht, dass es unmittelbare Helfer gibt, um dies zu erreichen, aber ich habe zwei Ideen, die Sie ausprobieren sollten:
Nur Ideen, habe es nicht getestet.
quelle
Dieses Problem wurde in ASP.Net MVC 3 behoben. Sie konvertieren jetzt automatisch Unterstriche in HTML-Attributeigenschaften in Bindestriche. Sie hatten Glück, da Unterstriche in HTML-Attributen nicht legal sind, sodass MVC sicher implizieren kann, dass Sie einen Strich möchten, wenn Sie einen Unterstrich verwenden.
Zum Beispiel:
wird dies in MVC 3 rendern:
Wenn Sie noch eine ältere Version von MVC verwenden, können Sie nachahmen, was MVC 3 tut, indem Sie diese statische Methode erstellen, die ich aus dem Quellcode von MVC3 ausgeliehen habe:
Und dann können Sie es so verwenden:
und dies wird das richtige Daten- * Attribut rendern:
quelle
WebGrid.GetHtml(htmlAttributes: new { data_some : "thing" })
. : '(RouteValueDictionary
sondern in die MVC3-Html.Something()
Methoden eingebrannt . Es ist möglich, dassWebGrid
nicht auf die gleiche Weise aktualisiert wurde, oder Sie könnten die Version auf derSystem.Web.Helpers.dll
Es ist noch einfacher als alles, was oben vorgeschlagen wurde. Datenattribute in MVC, die Bindestriche (-) enthalten, werden mit dem Unterstrich (_) berücksichtigt.
Ich sehe, dass JohnnyO dies bereits erwähnt hat.
quelle
In mvc 4 Könnte mit Unterstrich ("_") gerendert werden
Rasierer:
Gerendertes HTML
quelle
data-date
Attribut hätte, wie könnte ich es an den Controller / die Aktion senden? Auch was ist% 23 dortSie können dies mit einer neuen HTML-Hilfserweiterungsfunktion implementieren, die dann ähnlich wie die vorhandenen ActionLinks verwendet wird.
Und du nennst es so ...
Beispiele :-)
bearbeiten
bisschen mehr von einem aufzuschreiben hier
quelle
Am Ende habe ich einen normalen Hyperlink verwendet
Url.Action
, wie in:Es ist hässlicher, aber Sie haben etwas mehr Kontrolle über das
a
Tag, was manchmal bei stark AJAXified-Sites nützlich ist.HTH
quelle
Ich mag es nicht, reines "a" -Tag zu verwenden, zu viel zu tippen. Also komme ich mit Lösung. In Sicht sieht es aus
Implementierung der Dic-Klasse
quelle
t
zumindest am Ende ein Extra !Sie können es so verwenden:
In Mvc:
In HTML:
quelle