Гиперссылки html с asp.net mvc
Есть ли более хороший синтаксис при создании элементов с переносимыми атрибутами вместо использования:
<%= Html.TextBox ("name", value, new Dictionary<string, object> { {"data-foo", "bar"} }) %>
Глядя на спецификации HTML для предлагаемых стандартов HTML 5 и WIA ARIA, кажется, что дефисы в атрибутах HTML планируются более часто, как что-то вроде простого интервала между именами.
например. В HTML 5 пользовательские атрибуты имеют префикс data-
, а WIA ARIA использует префикс aria-
для всех атрибутов WIA ARIA.
При использовании HTML-помощников в ASP.NET MVC, таких как <%= Html.TextBox("name", value, new { attribute = attributeValue }) %>
, анонимный объект преобразуется в словарь.
К сожалению, в С# нет поддержки дефисов в именах, поэтому единственной альтернативой является создание словаря. Синтаксис, для которого очень многословный, кто-нибудь видел лучшую альтернативу или простой способ изменения функциональности HTML-страниц ASP.NET MVC без необходимости переписывать все расширение?
Ответы
Ответ 1
Используйте знак подчеркивания в имени атрибута данных, и он волшебным образом обработает его для вас, превратив его в дефис. Он знает, что вы хотите дефис, а не подчеркивание, поскольку подчеркивания недействительны в именах атрибутов html.
<%= Html.TextBox("name", value, new { @data_foo = "bar"}) %>
Ответ 2
В ответе ActionLink htmlAttributes предлагается использовать символы подчеркивания вместо дефиса. MVC.Net должен выделять дефисы вместо подчеркивания при отправке страницы в браузер.