2010-06-04 13 views
7

Estoy desarrollando un control personalizado que es una composición de tablas y botones. También tengo una hoja de estilo CSS externa que define los estilos para estos elementos.Vinculación de una hoja de estilos CSS con un control personalizado de ASP.NET

El tipo de control es CompositeControl, bajo espacio de nombres MyControls y la definición de la clase está en un archivo de clase CompositeControl.cs y el archivo DLL generada se denomina MyControls.dll

El hoja de estilos se llama styles.css y está en la misma carpeta que CompositeControl.cs

Para cada control (Button, TableCell, etc.), tengo specifie d la propiedad CssClass.

Cuando agrego este control a mi página web ASP.NET y verifico el código HTML cuando lo ejecuto en localhost, veo que todas las etiquetas de control tienen el atributo de clase establecido correctamente, pero la fuente no incluye la etiqueta <link> que es necesario para incluir una hoja de estilo externa.

¿Podría alguien decirme qué más tengo que hacer para que esto funcione? Gracias.

Respuesta

7

Los archivos fuente externos no se incluyen en la página automáticamente. Usted tiene que registrarse manualmente dentro de su control a su página:

HtmlLink cssSource = new HtmlLink(); 
cssSource.Href = Page.ClientScript.GetWebResourceUrl(this.GetType(), "styles.css"); 
cssSource.Attributes["rel"] = "stylesheet"; 
cssSource.Attributes["type"] = "text/css"; 
Page.Header.Controls.Add(cssSource); 

Además, trate de usar ClientScriptManager.GetWebResourceUrl para obtener la ubicación de su recurso incrustado. Aquí está an example de hacer referencia a un recurso incrustado.

+0

Gracias. Funcionó. –

+0

Después de usar GetWebResourceUrl, la hoja de estilo no se vincula. –

+0

@wacky_coder: Sí, ahora veo el problema, el primer parámetro, type parameter, debe ser el contenedor del recurso. En este caso, tu tipo de control. – Canavar

Cuestiones relacionadas