asp.net-mvc - page - asp route tag helper
¿Cómo puedo agregar un atributo de clase a un elemento HTML generado por los HTML Helpers de MVC? (2)
ASP.NET MVC puede generar elementos HTML utilizando HTML Helpers, por ejemplo @Html.ActionLink()
, @Html.BeginForm()
y así sucesivamente.
Sé que puedo especificar atributos de formulario al crear un objeto anónimo y pasar ese objeto por el (cuarto en este caso) parámetro htmlAttributes
donde se especifica una id
para el elemento:
Html.BeginForm("Foo", "Bar", FormMethod.Post, new { id = "MyForm"})
Pero, ¿qué pasa con el atributo de class
? Obviamente esto no funciona:
Html.BeginForm("Foo", "Bar", FormMethod.Post, new { class = "myclass"})
Como eso solo arroja errores de sintaxis aleatorios cuando se solicita mi vista, porque espera algo más después de encontrar la class
palabras clave C #.
También lo intenté:
new { _class = "myclass"}
y
new { class_ = "myclass"}
Pero tampoco funcionaron, ya que los caracteres de subrayado se reemplazan por guiones .
Sé que puedo escribir los elementos HTML a mano o envolver el formulario dentro de <div class="myClass">
, pero aún me interesaría saber cómo se debe hacer.
La mejor práctica actual en el desarrollo de CSS es crear selectores más generales con modificadores que se puedan aplicar de la manera más amplia posible en todo el sitio web. Intentaré evitar definir estilos separados para elementos de página individuales.
Si el objetivo de la clase CSS en el elemento <form/>
es controlar el estilo de los elementos dentro del formulario, puede agregar el atributo de clase al elemento <fieldset/>
que encapsula cualquier formulario de forma predeterminada en las páginas web generadas por ASP .NET MVC. Una clase de CSS en el formulario rara vez es necesaria.
Para crear un tipo anónimo (o cualquier tipo) con una propiedad que tenga una palabra clave reservada como su nombre en C #, puede anteponer el nombre de la propiedad con un signo at, @
:
Html.BeginForm("Foo", "Bar", FormMethod.Post, new { @class = "myclass"})
Para VB.NET, esta sintaxis se lograría usando el punto,. , que en ese idioma es la sintaxis predeterminada para todos los tipos anónimos :
Html.BeginForm("Foo", "Bar", FormMethod.Post, new with { .class = "myclass" })