[ASP.NET]在自定义控件中包含css

在自定义控件中包含css通常的做法是这样的:

string csslink = "<link href='" + url + "' rel='stylesheet' type='text/css' />";
LiteralControl include = new LiteralControl(csslink);
page.Header.Controls.Add(include);
但以上程序有一个问题,就是当Header中存在 <%%>的代码块的时候,会出现运行时错误,解决此种问题的方法是,既不能要求用户(使用控件的人)不在Header中使用代码块<%%>,也不能直接Page.Controls.Add(include),因为这同样会出现运行时错误

我的做法如下:

public static class ControlExtension
{
    public static void IncludeCss(this Control control,String webResouce)
    {
        String cssUrl = control.Page.ClientScript.GetWebResourceUrl(control.GetType(), webResouce);
        LiteralControl cssLink = new LiteralControl("<link href='" + cssUrl + "' rel='stylesheet' type='text/css' />");
        control.Controls.Add(cssLink); //加到自定义控件本身
    }
}
使用举例,在一个复全控件中:

protected override void CreateChildControls()
{
    this.IncludeCss("myNamespace.cssDirectory.my.css"); //包含指定资源代表的css文件
    //其它子控件代码,此处略
}

打开页面查看源文件:

<span id="myCustomControl"><link href='/WebResource.axd?d=T-gej6K8_w1LkIj4bdXyqrRrlMm-k0JVbBNwrI0dxqXiG_WAIlV2hihdU42EmH1cVUHmP8WzxmtYZOJYBm_7itbs3R2ivvV161BQMXNp1sI4lSTAuMJXbJp_OT2OaVRaF58CsLcgb_QGMvPsFTBDBLtXKZ0Y9mk0_W0m0AND0gNwD7SC0&t=634680192080902436' rel='stylesheet' type='text/css' />



评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值