Si el control está creando está en un ensamblado independiente , puede incrustar los archivos CSS dentro del conjunto para que sea reutilizable y crear un vínculo directo a estos archivos desde el control de, a continuación, en su control se registrará a ser prestados como link
etiquetas en su página
Nota: Recuerde que usted necesita para marcar el archivo CSS en su asamblea como un recurso incrustado
sólo tienes que seleccionar el archivo | entonces proeprties y cambiar su Acción de generación propiedad y la pusieron a: recurso incrustado
En el siguiente código:
El ejemplo de código siguiente muestra los pasos necesarios: (en su control de servidor personalizado)
[assembly: WebResource("AjaxEnabled.Web.UI.DefaultStyle.css", "text/css")]
protected override void OnInit(EventArgs e)
{
base.OnInit(e);
if (this.Page.Header != null)
{
if (!this.Page.ClientScript.IsClientScriptBlockRegistered("defaultCss"))
{
var link = new HtmlLink();
link.Href = this.Page.ClientScript.GetWebResourceUrl(
typeof(YourControlType),
"AjaxEnabled.Web.UI.DefaultStyle.css"
);
link.Attributes.Add("rel", "stylesheet");
link.Attributes.Add("type", "text/css");
this.Page.Header.Controls.Add(link);
this.Page.ClientScript.RegisterClientScriptBlock(
typeof(Page),
"defaultCss",
string.Empty
);
}
}
}
Es necesario añadir una instancia del control ScriptManager
en su página que contiene los controles personalizados
<asp:ScriptManager runat="server" ID="sm"/>
Y en su página ASPX debe marcar la sección header
como control de servidor
<head runat="server">
El siguiente código:
link.Href = this.Page.ClientScript.GetWebResourceUrl(
typeof(YourControlType),
"AjaxEnabled.Web.UI.DefaultStyle.css");
Renders un enlace directamente al archivo CSS incrustado en la asamblea
Esta condición:
if (!this.Page.ClientScript.IsClientScriptBlockRegistered("defaultCss"))
...
this.Page.ClientScript.RegisterClientScriptBlock(
typeof(Page),
"defaultCss",
string.Empty
);
asegura que el CSS se representa solo una vez en la página, incluso si elimina más de una instancia de su control
Fuera de interés, ¿por qué requeriría un montaje por separado? – saille
Solo se requiere si desea encapsular completamente sus estilos en el control. Si lo haces, entonces puedes simplemente compartir tu ddl que contiene tu control y los archivos CSS se compartirán porque se integrarán en el ensamblado. Sin embargo, esto no es obligatorio si solo planea usar sus controles en un sitio. Actualizaré la respuesta para mostrar el código necesario para usar los recursos integrados en un ensamblaje – Jupaol
inicialmente, no distribuiría el código. Pero es un complemento para un CMS comercial, por lo que una vez que esté satisfecho con él, creo que adoptaré esta solución para que podamos distribuir el código completo como un paquete para que lo usen otras personas. Gracias por una respuesta integral :) – nedlud