Атрибути html з дефісом з asp.net mvc


111

Чи є приємніший синтаксис при створенні елементів з дефісом атрибутів замість використання:

<%= 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 без необхідності повторного запису всього розширення?

Відповіді:


202

Використовуйте підкреслення в назві атрибуту даних, і він магічно обробляє це за вас, перетворюючи його на дефіс. Він знає, що ви хочете дефіс, а не підкреслення, оскільки підкреслення не дійсні в іменах html-атрибутів.

<%= Html.TextBox("name", value, new { @data_foo = "bar"}) %>

2
Я знайшов подібну проблему декількох запитань SO, і це найкраща відповідь.
користувач2780436

Чи можете ви додати причину вашої заяви, підкреслення недійсні в атрибутах html . Щонайменше html 4.01 повідомляє : Значення атрибута може містити лише літери (az та AZ), цифри (0-9), дефіси (ASCII десятковий 45), періоди (ASCII десятковий 46), підкреслення (ASCII десятковий 95) та колонки ( ASCII десятковий 58) ,
surfmuggle

@threeFourOneSixOneThree ваша цитата стосується значення атрибута, але в цьому питанні ми маємо на увазі імена атрибутів.
ED-209

@threeFourOneSixOneThree Я змінив кінець своєї відповіді на "підкреслення не дійсні в іменах html-атрибутів"
ED-209

19

Відповідь, надана в ActionLink htmlAttributes, пропонує використовувати підкреслення замість дефісів. MVC.Net повинен видавати дефіси замість підкреслення під час надсилання сторінки в браузер.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.