asp.net动态添加css样式表文件
项目中要求在不同时间段根据不同条件更改一些控件的样式,甚至增加一些不同的样式表文件,这样我就不能把引用样式表的代码写在html中,只能在程序中动态添加了。
先添加一个 abc.css 和 webform1.aspx 用来测试

webform1.aspx代码如下:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
namespace WebApplication1
{
public partial class WebForm1 : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
AddCss(this, "abc.css");
}
/// <summary>
/// 添加css文件的引用
/// </summary>
/// <param name="c">控件名,一般写this就可以</param>
/// <param name="FilePath">css文件的路径,如"/site.css"</param>
public string AddCss(Control c, string FilePath)
{
try
{
Control x = c;
if (x.Parent != null)
{
x = x.Parent;
//如果当前控件不是顶层页面
while (!(x is Page))
{
//得到父控件
x = x.Parent;
}
}
//找到顶层控件后转成Page对象
Page y = (Page)x;
HtmlLink cssLink = new HtmlLink();
cssLink.Href = FilePath;
cssLink.Attributes.Add("rel", "stylesheet");
cssLink.Attributes.Add("type", "text/css");
y.Header.Controls.Add(cssLink);
return "OK";
}
catch (Exception ErrMsg)
{
//出错处理
return ErrMsg.ToString();
}
}
}
}
使用方法就是这句
AddCss(this, "abc.css");
结果如下:
