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

StackOverflow https://stackoverflow.com/questions/879266

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top