Я пытаюсь использовать атрибуты данных HTML5 в моем проекте ASP.NET MVC 1. (Я новичок в C # и ASP.NET MVC.)
<%= Html.ActionLink("« Previous", "Search",
new { keyword = Model.Keyword, page = Model.currPage - 1},
new { @class = "prev", data-details = "Some Details" })%>
«Данные-данные» в приведенных выше атрибутах htmlAttributes выдают следующую ошибку:
CS0746: Invalid anonymous type member declarator. Anonymous type members
must be declared with a member assignment, simple name or member access.
Это работает, когда я использую data_details, но я предполагаю, что он должен начинаться с «data-» согласно спецификации.
Мои вопросы:
- Есть ли способ заставить это работать и использовать атрибуты данных HTML5 с Html.ActionLink или аналогичными помощниками Html?
- Есть ли другой альтернативный механизм для прикрепления пользовательских данных к элементу? Эти данные будут позже обработаны JS.
Ответы:
Обновление: MVC 3 и более новые версии имеют встроенную поддержку для этого. См. Высоко одобренный ответ JohnnyO ниже для рекомендуемых решений.
Я не думаю, что есть непосредственные помощники для достижения этой цели, но у меня есть две идеи для вас:
Просто идеи, не проверял это.
источник
Эта проблема была решена в ASP.Net MVC 3. Теперь они автоматически преобразуют подчеркивания в свойствах атрибута html в тире. Им повезло в этом, так как подчеркивание недопустимо в атрибутах html, поэтому MVC может с уверенностью подразумевать, что вы хотели бы использовать тире при использовании подчеркивания.
Например:
сделает это в MVC 3:
Если вы все еще используете более старую версию MVC, вы можете имитировать то, что делает MVC 3, создав этот статический метод, который я позаимствовал из исходного кода MVC3:
И тогда вы можете использовать это так:
и это отобразит правильный атрибут data- *:
источник
WebGrid.GetHtml(htmlAttributes: new { data_some : "thing" })
. : '(RouteValueDictionary
аHtml.Something()
методы MVC3 . Возможно, чтоWebGrid
не был обновлен таким же образом, или вы можете проверить версию наSystem.Web.Helpers.dll
Это даже проще, чем все предложенное выше. Атрибуты данных в MVC, которые включают тире (-), обрабатываются с использованием подчеркивания (_).
Я вижу, Джонни уже упоминал об этом.
источник
В MVC 4 может быть отображено с Underscore ("_")
Razor:
Рендеринг HTML
источник
data-date
атрибут, как я могу отправить его в контроллер / действие? И что там за% 23Вы можете реализовать это с помощью новой вспомогательной функции расширения Html, которая затем будет использоваться аналогично существующим ссылкам ActionLinks.
И ты называешь это так ...
Simples :-)
редактировать
немного больше писать здесь
источник
В итоге я использовал обычную гиперссылку
Url.Action
, как в:Это ужаснее, но у вас есть немного больше контроля над
a
тегом, который иногда полезен на сайтах с высокой степенью AJAXified.НТН
источник
Я не люблю использовать чистый тег "a", слишком много печатать. Итак, я пришел с решением. В виду это выглядит
Реализация класса Dic
источник
t
по крайней мере, дополнительный в конце!Вы можете использовать это так:
В мвк:
В HTML:
источник