2008-09-18 33 views
11

Basado en una prueba simple que ejecuté, no creo que sea posible poner una etiqueta < de estilo 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.Aplicar CSS en línea a un control de servidor ASP.NET

¿Es posible hacer esto? Puedo ver que es útil para prototipos rápidos que solo tienen 1 o 2 clases de CSS para aplicar.

Actualización:

Por la petición de Jonathan, que 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 sería probablemente 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.

+0

Podría dar un ejemplo de código de lo que ha intentado hacer y cómo se espera que rinda en el HTML ? Eso nos ayudaría a resolver tu problema. –

Respuesta

12

Según www.w3schools.com:

El estilo el elemento va en la sección de la cabeza. Si desea incluir una hoja de estilo en su página, debe definir la hoja de estilo externamente y vincularla al <link>.

Así que 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 los estilos en línea a continuación, un elemento cualquiera de ellos podría funcionar:

C#

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 hay que tener en cuenta que este 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.

El uso de 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.

1

Creo que tendrá que agregarlo como un atributo para el control del servidor ... para que se muestre en HTML.

Así que, básicamente (en C#),

ControlName.Attributes["style"] = "color:red"; 
39

Intellisense no le dará consejos, pero se puede hacer esto:

<asp:Label ID="Label1" runat="server" Text="Label" style="color:Red;"></asp:Label> 
+0

¡Esto es lo que el OP estaba pidiendo! ¡Gracias! - Parece que es lo mismo que HTML. – Amjad

5

Si utiliza los atributos ["estilo"], está sobrescribiendo el estilo cada vez que lo llame. 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. He aquí 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 muy bien, los estilos de juego de esta forma:

// 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%"); 
Cuestiones relacionadas