Como posso adicionar um atributo de classe a um elemento HTML gerado pelo do MVC HTML Helpers?
-
22-08-2019 - |
Pergunta
ASP.NET MVC pode gerar elementos HTML usando HTML Helpers, por exemplo @Html.ActionLink()
, @Html.BeginForm()
e assim por diante.
Eu sei que posso especificar atributos de formulário, criando um href="http://msdn.microsoft.com/en-us/library/vstudio/bb397696.aspx" rel="noreferrer"> objeto anônimo e passar esse objecto para o (quarto neste caso) parâmetro htmlAttributes
onde especificando um id
para o elemento:
Html.BeginForm("Foo", "Bar", FormMethod.Post, new { id = "MyForm"})
Mas o que sobre o atributo class
? Obviamente, isso não funciona:
Html.BeginForm("Foo", "Bar", FormMethod.Post, new { class = "myclass"})
Como que só gera erros de sintaxe aleatório quando meu ponto de vista é solicitada, porque espera algo mais depois de encontrar o C # palavra-chave class
.
Eu também tentei:
new { _class = "myclass"}
e
new { class_ = "myclass"}
Mas eles também não funcionou, como o sublinhados são substituídos por traços .
Eu sei que pode muito bem escrever os elementos HTML à mão ou envolva o formulário dentro de um <div class="myClass">
, mas eu ainda estaria interessado em saber como é suposto ser feito.
Solução
A fim de criar um tipo anônimo (ou qualquer tipo) com uma propriedade que tem um reservados palavra-chave como o seu nome em C #, você pode preceder o nome da propriedade com um sinal de arroba, @
:
Html.BeginForm("Foo", "Bar", FormMethod.Post, new { @class = "myclass"})
Para VB.NET essa sintaxe seria realizada utilizando o ponto, .
, que nesse idioma é a sintaxe padrão para todas tipos anônimos :
Html.BeginForm("Foo", "Bar", FormMethod.Post, new with { .class = "myclass" })
Outras dicas
Current melhores práticas no desenvolvimento CSS é criar seletores mais gerais com modificadores que podem ser aplicadas o mais amplamente possível em todo o web site. Gostaria de tentar evitar definir estilos diferentes para elementos de página individuais.
Se o propósito da classe CSS no elemento <form/>
é controlar o estilo de elementos dentro do formulário, você pode adicionar o atributo de classe do elemento <fieldset/>
existente que encapsula qualquer forma por padrão em páginas da web geradas pelo ASP.NET MVC . Uma classe CSS no formulário raramente é necessário.