Wie geben Sie eine Eigenschaft mit - im Namen
-
09-10-2019 - |
Frage
Ich bin mit ASP.NET MVC zusammen mit JQueryMobile in einem Web-App. Ich möchte einen Link erzeugen:
<a href="/Whatever/Previous" data-role="button" data-icon="arrow-l">Previous</a>
Ich habe einen Helfer Erweiterung Methode, die lässt mich tun:
<%= Html.ActionLink<WhateverController>(c => c.Previous(),
"Previous",
new { data-role = "button", data-icon="arrow-l" } ) %>
Mit Ausnahme data-role
und data-icon
ist als Eigenschaftsnamen in C # nicht gültig. @data-role
verwenden, funktioniert aber auch nicht.
Gibt es eine Syntax zu arbeiten, um dieses? Oder bin ich mit der Schaffung einer spezialisierten Helfer fest, dass die richtigen Attributnamen kennt.
Lösung
Sie sollten in der Lage sein IDictionary<string, object>
zu verwenden, anstatt des anonymen Objekts:
Html.ActionLink<WhateverController>(c => c.Previous(),
"Previous",
new Dictionary<string, object>
{
{ "data-role", "button" },
{ "data-icon", "arrow-l"}
})
Andere Tipps
Neben svick Antwort haben wir eine ordentliche Änderung in ASP.NET MVC 3 mit Eigenschaften, die einen Unterstrich in ihnen automatisch die Unterstrichen zu Bindestriche umgewandelt haben.
Also, wenn Sie Code wie folgt aussehen:
<%= Html.ActionLink<WhateverController>(c => c.Previous(),
"Previous",
new { data_role = "button", data_icon="arrow-l") %>
Es wird das Markup mit Bindestrichen machen:
<a href="/Whatever/Previous" data-role="button" data-icon="arrow-l">Previous</a>
Denn das Zeichen ist auch die Subtraktion / einstellige Minusoperator können Sie es nicht in einem Bezeichner verwenden. Ich denke, die benutzerdefinierte Helfer-Methode ist wahrscheinlich die beste Wahl.