Гиперссылки 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 должен выделять дефисы вместо подчеркивания при отправке страницы в браузер.