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


ASP.NET MVC может генерировать HTML-элементы с помощью HTML-помощников, например @Html.ActionLink(),@Html.BeginForm() и так далее.

Я знаю, что могу указать атрибуты формы, создав анонимный объект и передайте этот объект для (четвертого в данном случае), где задание id для этого элемента:

Html.BeginForm("Foo", "Bar", FormMethod.Post, new { id = "MyForm"})

а как же ? Очевидно, что это не работает:

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

как это просто бросает случайный синтаксис ошибки при запросе моего представления, потому что он ожидает что-то еще после встречи с ключевым словом C#class.

Я тоже пробовал:

new { _class = "myclass"}

и

new { class_ = "myclass"}

но они тоже не работали, так как подчеркивания заменяются тире.

Я знаю, что я могу также написать элементы HTML вручную или обернуть форму внутри <div class="myClass">, но мне все равно было бы интересно узнать, как это должно быть сделано.

2 185

2 ответа:

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

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/> элемент, который инкапсулирует любую форму по умолчанию в создаваемых веб-страницах by ASP.NET MVC. Класс CSS в форме редко требуется.