Как добавить атрибут класса в элемент HTML, сгенерированный MVC HTML Helpers?
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"})
Так как это просто выбрасывает случайные синтаксические ошибки при запросе моего представления, потому что он ожидает что-то еще после того, как встретит ключевое слово С# class
.
Я также пробовал:
new { _class = "myclass"}
и
new { class_ = "myclass"}
Но они также не работали, так как подчеркивания заменяются тире.
Я знаю, что могу просто написать элементы HTML вручную или обернуть форму внутри <div class="myClass">
, но мне все равно интересно узнать, как это должно быть сделано.
Ответы
Ответ 1
Чтобы создать анонимный тип (или любой тип) с свойством зарезервированное ключевое слово в качестве его имени на С#, вы можете добавьте имя свойства со знаком, @
:
Html.BeginForm("Foo", "Bar", FormMethod.Post, new { @class = "myclass"})
Для VB.NET этот синтаксис будет выполнен с использованием точки, .
, которая на этом языке является синтаксисом по умолчанию для все анонимные типы:
Html.BeginForm("Foo", "Bar", FormMethod.Post, new with { .class = "myclass" })
Ответ 2
Текущей лучшей практикой в разработке CSS является создание более общих селекторов с модификаторами, которые можно применять как можно более широко на веб-сайте. Я попытался бы избежать определения отдельных стилей для отдельных элементов страницы.
Если целью класса CSS в элементе <form/>
является управление стилем элементов в форме, вы можете добавить атрибут класса существующий элемент <fieldset/>
, который инкапсулирует любую форму по умолчанию на веб-страницах, сгенерированных ASP.NET MVC. Класс CSS в форме редко необходим.