¿Cómo puedo añadir un atributo de clase a un elemento HTML generado por los ayudantes HTML de MVC?

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

  •  22-08-2019
  •  | 
  •  

Pregunta

ASP.NET MVC puede generar elementos HTML usando HTML ayudantes, por ejemplo @Html.ActionLink(), @Html.BeginForm() y así sucesivamente.

Sé que puedo especificar atributos de formulario mediante la creación de una objeto anónimo y pasar dicho objeto para el (cuarto en este caso) parámetro htmlAttributes donde la especificación de un id para el elemento:

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

Pero ¿qué pasa con el atributo class? Obviamente esto no funciona:

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

A medida que acaba de tiros errores de sintaxis al azar cuando se solicita mi punto de vista, porque espera algo más después de encontrarse con la palabra clave C # class.

También he intentado:

new { _class = "myclass"}

y

new { class_ = "myclass"}

Pero también no funcionaron, como el subrayados son reemplazados por guiones .

Yo sé que puedo escribir tan bien los elementos HTML a mano o envolver el formulario dentro de un <div class="myClass">, pero todavía estaría interesado en saber cómo se supone que debe hacerse.

¿Fue útil?

Solución

Con el fin de crear un tipo anónimo (o cualquier tipo) con una propiedad que tiene un palabra clave reservada como su nombre en C #, puede anteponer el nombre de propiedad con una arroba, @:

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

En VB.NET esta sintaxis se a cabo utilizando el punto, ., que en ese idioma es la sintaxis predeterminada para todos tipos anónimos :

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

Otros consejos

La mejor práctica actual en el desarrollo de CSS es crear selectores más generales con modificadores que se pueden aplicar lo más ampliamente posible a través del sitio web. Me gustaría tratar de evitar la definición de estilos distintos para los elementos individuales de página.

Si el propósito de la clase CSS en el elemento <form/> es controlar el estilo de los elementos dentro de la forma, se podría añadir el atributo de clase del elemento <fieldset/> existente que encapsula cualquier forma por defecto en páginas web generadas por ASP.NET MVC . Una clase CSS en la forma rara vez es necesario.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top