Как я могу добавить атрибут класса к HTML-элементу, сгенерированному HTML-помощниками MVC?
-
22-08-2019 - |
Вопрос
ASP.NET MVC может генерировать HTML-элементы с помощью HTML-помощников, например @Html.ActionLink()
, @Html.BeginForm()
и так далее.
Я знаю, что могу указать атрибуты формы, создав анонимный объект и передайте этот объект для (четвертого в данном случае) htmlAttributes
параметр, в котором указывается id
для элемента:
Html.BeginForm("Foo", "Bar", FormMethod.Post, new { id = "MyForm"})
Но как насчет class
атрибут?Очевидно, что это не работает:
Html.BeginForm("Foo", "Bar", FormMethod.Post, new { class = "myclass"})
Поскольку это просто выдает случайные синтаксические ошибки при запросе моего представления, потому что оно ожидает чего-то другого после столкновения с ключевым словом C # class
.
Я тоже пытался:
new { _class = "myclass"}
и
new { class_ = "myclass"}
Но они также не сработали, так как подчеркивания заменяются тире.
Я знаю, что с таким же успехом я могу написать HTML-элементы вручную или обернуть форму внутри <div class="myClass">
, но мне все равно было бы интересно узнать, как это должно быть сделано.
Решение
Чтобы создать анонимный тип (или любой другой тип) со свойством, которое имеет зарезервированное ключевое слово в качестве его имени в C # вы можете добавить к имени свойства знак at, @
:
Html.BeginForm("Foo", "Bar", FormMethod.Post, new { @class = "myclass"})
Для VB.NET этот синтаксис был бы следующим выполнено с использованием точки, .
, который на этом языке является синтаксисом по умолчанию для ВСЕ анонимные типы:
Html.BeginForm("Foo", "Bar", FormMethod.Post, new with { .class = "myclass" })
Другие советы
Текущая лучшая практика в разработке CSS заключается в создании более общих селекторов с модификаторами, которые могут применяться как можно шире по всему веб-сайту.Я бы постарался избежать определения отдельных стилей для отдельных элементов страницы.
Если назначение CSS-класса на <form/>
элемент предназначен для управления стилем элементов внутри формы, вы могли бы добавить атрибут класса к существующему <fieldset/>
элемент, который по умолчанию инкапсулирует любую форму на веб-страницах, сгенерированных с помощью ASP.NET MVC.CSS-класс в форме редко бывает необходим.