Próbuję użyć atrybutów danych HTML5 w moim projekcie ASP.NET MVC 1. (Jestem początkującym użytkownikiem C # i ASP.NET MVC.)
<%= Html.ActionLink("« Previous", "Search",
new { keyword = Model.Keyword, page = Model.currPage - 1},
new { @class = "prev", data-details = "Some Details" })%>
„Szczegóły danych” w powyższym atrybucie HTML zawierają następujący błąd:
CS0746: Invalid anonymous type member declarator. Anonymous type members
must be declared with a member assignment, simple name or member access.
Działa, gdy używam data_details, ale myślę, że musi zaczynać się od „data-” zgodnie ze specyfikacją.
Moje pytania:
- Czy jest jakiś sposób, aby to zadziałało i używać atrybutów danych HTML5 z Html.ActionLink lub podobnymi pomocnikami HTML?
- Czy istnieje jakiś alternatywny mechanizm dołączania niestandardowych danych do elementu? Dane te będą przetwarzane później przez JS.
asp.net-mvc
html
custom-data-attribute
Shameem
źródło
źródło
Odpowiedzi:
Aktualizacja: MVC 3 i nowsze wersje mają wbudowaną obsługę tego. Zobacz wysoko ocenioną odpowiedź JohnnyO poniżej, aby znaleźć zalecane rozwiązania.
Nie wydaje mi się, aby byli to bezpośredni pomocnicy, ale mam dwa pomysły do wypróbowania:
Tylko pomysły, nie przetestowałem tego.
źródło
Ten problem został rozwiązany w ASP.Net MVC 3. Teraz automatycznie konwertują podkreślenia we właściwościach atrybutów HTML na myślniki. Mają szczęście w tym, ponieważ podkreślenia nie są legalne w atrybutach HTML, więc MVC może z pewnością sugerować, że chcesz użyć myślnika, gdy używasz podkreślenia.
Na przykład:
renderuje to w MVC 3:
Jeśli nadal używasz starszej wersji MVC, możesz naśladować to, co robi MVC 3, tworząc tę statyczną metodę, którą pożyczyłem z kodu źródłowego MVC3:
A potem możesz użyć tego w następujący sposób:
a to wyrenderuje poprawny atrybut data- *:
źródło
WebGrid.GetHtml(htmlAttributes: new { data_some : "thing" })
. : '(RouteValueDictionary
powiązane zHtml.Something()
metodami MVC3 . Możliwe, żeWebGrid
nie został zaktualizowany w ten sam sposób, lub możesz sprawdzić wersję naSystem.Web.Helpers.dll
Jest to nawet łatwiejsze niż wszystko sugerowane powyżej. Atrybuty danych w MVC, które obejmują myślniki (-), są pokrywane za pomocą podkreślenia (_).
Widzę, że JohnnyO już o tym wspomniał.
źródło
W mvc 4 Może być renderowany z podkreśleniem („_”)
Brzytwa:
Renderowany HTML
źródło
data-date
atrybut w, jak mogę go opublikować w kontrolerze / akcji? Także co tam% 23Możesz to zaimplementować za pomocą nowej funkcji rozszerzenia pomocnika HTML, która będzie następnie używana podobnie do istniejących ActionLinków.
I tak to nazywacie ...
Simples :-)
edytować
trochę więcej napisz tutaj
źródło
Skończyło się na użyciu normalnego hiperłącza wraz z
Url.Action
, jak w:Jest brzydszy, ale masz nieco większą kontrolę nad
a
tagiem, co czasami jest przydatne w witrynach mocno z AJAXified.HTH
źródło
Nie lubię używać czystego znacznika „a”, zbyt dużo pisania. Więc przychodzę z rozwiązaniem. W widoku wygląda
Implementacja klasy Dic
źródło
t
przynajmniej na końcu!Możesz użyć tego w następujący sposób:
W Mvc:
W HTML:
źródło