Como posso adicionar um atributo de classe a um elemento HTML gerado pelo do MVC HTML Helpers?

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

  •  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.

Foi útil?

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.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top