Как добавить атрибут класса в элемент 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 в форме редко необходим.