tutorial - Aplicar CSS en línea a un control de servidor ASP.NET
utilización de estilos en asp net css (4)
De acuerdo con www.w3schools.com :
El elemento de estilo va en la sección de la cabeza. Si desea incluir una hoja de estilos en su página, debe definir la hoja de estilos externamente y vincularla usando
<link>
.
Por lo tanto, no es una buena idea incluir elementos de estilo (por ejemplo, un bloque <style type="text/css"></style>
) en un control. Si pudiera, probablemente tendría un efecto en algunos navegadores pero no validaría y es una mala práctica.
Si desea aplicar estilos en línea a un elemento, cualquiera de estos funcionaría:
DO#
myControl.Attributes["style"] = "color:red";
myControl.Attributes.Add("style", "color:red");
VB.NET
myControl.Attributes("style") = "color:red";
myControl.Attributes.Add("style", "color:red");
Pero tenga en cuenta que esto reemplazará cualquier estilo existente que esté establecido en el atributo de estilo . Esto puede ser un problema si intenta establecer estilos en más de un lugar en el código, por lo que debe tener cuidado.
Usar clases de CSS sería preferible ya que puede agrupar varias declaraciones de estilo y evitar la redundancia y la saturación de la página. Todos los controles derivados de WebControl tienen una propiedad CssClass que puede usar, pero nuevamente tenga cuidado de no sobrescribir las clases existentes que se han aplicado en otro lugar.
Basado en una prueba simple que ejecuté, no creo que sea posible poner una etiqueta <style> en línea en un control de servidor ASP.NET. El estilo no terminó procesando en el HTML de salida. Incluso si fuera posible, estoy seguro de que es una mala práctica hacer esto.
¿Es posible hacer esto? Puedo ver que es útil para prototipos rápidos que solo tienen 1 o 2 clases de CSS para aplicar.
Actualizar:
A petición de Jonathan, iba a publicar el código. Pero, cuando abrí mi proyecto y cargué la página nuevamente (solo por patadas), se ejecutó correctamente. Supongo que tiene algo que ver con reiniciar el servidor de desarrollo ASP.NET que Visual Studio inicia cuando ejecuta una página.
En cualquier caso, cuando incluí controles múltiples idénticos en la página, obtuve varios estilos idénticos también. Esta probablemente sea la explicación de por qué hacer esto es algo malo. A pesar de todo, siempre es bueno conocer las mejores prácticas y los métodos alternativos para llevar a cabo una tarea, así que agradezco a todos por sus respuestas.
Creo que tendrá que agregarlo como un atributo al control del servidor ... para que se represente en HTML.
Entonces, básicamente (en C #),
ControlName.Attributes["style"] = "color:red";
Intellisense no te dará pistas, pero puedes hacer esto:
<asp:Label ID="Label1" runat="server" Text="Label" style="color:Red;"></asp:Label>
Si usa los atributos ["estilo"], está sobrescribiendo el estilo cada vez que lo llama. Esto puede ser un problema si realiza la llamada en dos secciones diferentes de código. Además, puede ser un problema porque el marco incluye propiedades para configuraciones básicas como borde y color que también se aplicarán como estilos en línea. Aquí hay un ejemplo:
// wrong: first style will be overwritten
myControl.Attributes["style"] = "text-align:center";
// in some other section of code
myControl.Attributes["style"] = "width:100%";
Para jugar bien, establece estilos como este en su lugar:
// correct: both style settings are applied
myControl.Attributes.CssStyle.Add("text-align", "center");
// in some other section of code
myControl.Attributes.CssStyle.Add("width", "100%");