2009-09-02 5 views

Respuesta

4

Aquí lo que utilizo para añadir una referencia a la página css programación:

HtmlLink link = new HtmlLink(); 
link.Href = relativePath; 
link.Attributes["type"] = "text/css"; 
link.Attributes["rel"] = "stylesheet"; 
Page.Header.Controls.Add(link); 

tal vez debería añadir algo de código para comprobar si el archivo css agrega al control de cabecera.

+0

¿Dónde debería embeber esto en el control de servidor personalizado? –

+0

¿En qué fase del ciclo de creación? –

+0

CreateChildControls es adecuado, creo. – Canavar

0

Puede hacerlo con un ScriptManager - y esto también lo ayudará a incrustar la hoja de estilo en la DLL de la biblioteca de control personalizado.

O simplemente podría hacer referencia al CSS desde su página maestra. A menos que esté empaquetando una biblioteca de control personalizada para vender etc., ScriptManager requiere MUCHO esfuerzo extra frente a la solución Master Page

0

Creo que podría agregar Canavar's code a una clase base que se incluiría con todas las clases que necesitan eso.

public class myclass : BaseClass 
{ 
    var customCSS = customcss(); 
    Page.Header.Controls.Add(customCSS); } 

y su clase base:

public class BaseClass : Page 
{ 
    public HtnlLink customcss(){ 
     HtmlLink link = new HtmlLink(); 
    link.Href = relativePath; 
    link.Attributes["type"] = "text/css"; 
    link.Attributes["rel"] = "stylesheet"; 
    return link; 
} 
} 

o usted podría ir por el camino de

myObject.Attributes.Add("style","width:10px; height:100px;"); 

o

myObject.Attributes.Add("style",customStyle();); 

donde esto está en sus baseclass

public String customStyle() 
{ 
return "width:10px; height:20px;"; 
} 

y customstyle sería una función de este modo:

Pero yo asumiría que utiliza CSS para el resto de su sitio, así que tal vez un estilo solo se podría añadir a su hoja de estilo que utiliza en todo páginas a través de este método se podría usar el siguiente código:

myObject.Attributes.Add("class","customControl"); 

esto luego hacer referencia al estilo CSS correcta de su hoja de estilo principal, siempre incluido.

A menos que me estoy perdiendo algo aquí ....

13

Debe seguir los siguientes pasos para agregar css/javascript/image en el control web.

  1. Modificar el archivo AssemblyInfo.cs, para añadir el recurso web

    [assembly: System.Web.UI.WebResource ("CustomControls.Styles.GridStyles.css "," text/css "), PerformSubstitution = true)]

  2. Agregar los archivos necesarios (css/javascript/images) a la solución de control de servidor personalizado. Tenga en cuenta que podemos agregar carpetas en la solución y solo agregar separarlo usando '' (punto)

  3. que es más importante, debemos cambiar la propiedad BuildAction de contenido en Recurso incrustado de los archivos css/javascript/imagen que acaba de agregar.

  4. de continuar, debemos cargar el almacenado recursos de la DLL. El mejor evento para esto sería OnPreRender A continuación se muestra el código de muestra que representa css

    protected override void OnPreRender(EventArgs e) 
        { 
         bool linkIncluded = false; 
         foreach (Control c in Page.Header.Controls) 
         { 
          if (c.ID == "GridStyle") 
          { 
           linkIncluded = true; 
          } 
         } 
         if (!linkIncluded) 
         { 
          HtmlGenericControl csslink = new HtmlGenericControl("link"); 
          csslink.ID = "GridStyle"; 
          csslink.Attributes.Add("href", Page.ClientScript.GetWebResourceUrl(this.GetType(), "CustomControls.Styles.GridStyles.css")); 
          csslink.Attributes.Add("type", "text/css"); 
          csslink.Attributes.Add("rel", "stylesheet"); 
          Page.Header.Controls.Add(csslink); 
         } 
        } 
    

Del mismo modo para Adición de JavaScript

protected override void OnPreRender(EventArgs e) 
    { 
     string resourceName = "CustomControls.GridViewScript.js"; 
     ClientScriptManager cs = this.Page.ClientScript; 
     cs.RegisterClientScriptResource(this.GetType(), resourceName); 
    } 

Del mismo modo mediante el añadido de imágenes en el archivo CSS. Utilice el siguiente código

background: url('<%=WebResource("CustomControls.Styles.Cross.png")%>') no-repeat 95% 50%; 

Thanks.

Cuestiones relacionadas