Как добавить атрибут класса к элементу HTML, созданному HTML-помощниками MVC? - PullRequest
187 голосов
/ 18 мая 2009

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">, но мне все равно было бы интересно узнать, как это должно быть сделано.

Ответы [ 2 ]

348 голосов
/ 18 мая 2009

Чтобы создать анонимный тип (или любой тип) со свойством, которое имеет в качестве имени в C # зарезервированное ключевое слово , можно добавить к имени свойства знак at, @:

Html.BeginForm("Foo", "Bar", FormMethod.Post, new { @class = "myclass"})

Для VB.NET этот синтаксис будет реализован с использованием точки ., которая на этом языке является синтаксисом по умолчанию для всех анонимных типов :

Html.BeginForm("Foo", "Bar", FormMethod.Post, new with { .class = "myclass" })
3 голосов
/ 23 июня 2009

В настоящее время наилучшей практикой в ​​разработке CSS является создание более общих селекторов с модификаторами, которые можно применять как можно шире на всем веб-сайте. Я бы постарался избежать определения отдельных стилей для отдельных элементов страницы.

Если цель класса CSS для элемента <form/> состоит в том, чтобы управлять стилем элементов в форме, вы можете добавить атрибут класса к существующему элементу <fieldset/>, который по умолчанию инкапсулирует любую форму в веб-страницах, созданных ASP.NET MVC. Класс CSS в форме редко требуется.

...