Атрибуты переноса html с asp.net mvc - PullRequest
102 голосов
/ 24 мая 2010

Есть ли лучший синтаксис при создании элементов с дефисными атрибутами вместо использования:

<%= 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 }) %>, анонимный объект преобразуется в словарь.

К сожалению, в C # нет поддержки дефисов в именах, поэтому единственной альтернативой является создание словаря. Синтаксис для которого очень многословен, кто-нибудь видел более приятную альтернативу или простой способ изменить функциональность HTML-расширений ASP.NET MVC без необходимости переписывать все расширение?

Ответы [ 2 ]

186 голосов
/ 23 августа 2012

Используйте подчеркивание в имени атрибута данных, и он волшебным образом обработает его для вас, преобразовав его в дефис.Он знает, что вам нужен дефис, а не подчеркивание, так как подчеркивания недопустимы в именах атрибутов html.

<%= Html.TextBox("name", value, new { @data_foo = "bar"}) %>
18 голосов
/ 15 декабря 2011

Ответ, предоставленный на ActionLink htmlAttributes , предлагает использовать подчеркивание вместо дефисов.Предполагается, что при отправке страницы в браузер MVC.Net выделяет дефисы вместо подчеркивания.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...