网上不少文章关于动态切换CSS的都是使用JavaScript脚本或C#脚本切换link元素的href属性,但是我用了母板页,由于在母板页中使用了ContentPlaceHoder,子页面的所有标记必须处于ContentPlaceHolder中,否则就会出错。又由于在ContentPlaceHoder中不能插入Link标记,所以这个问题很难办啊,请高手来指点迷津。
调试欢乐多
http://www.cnblogs.com/MICRONET/archive/2006/05/23/406974.html
http://www.cnblogs.com/lincats/archive/2008/11/24/1150720.html
代码如下:
using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;/// <summary>
/// CSSService 服务类
/// </summary>
public class CSSService
{
public CSSService()
{
//
// TODO: 在此处添加构造函数逻辑
//
} #region 切换CSS /// <summary>
/// 切换CSS
/// 作者:胡海
/// 日期:2008-12-17
/// </summary>
/// <param name="page">当前页面的Page</param>
/// <param name="CSSFilePath">CSS文件相对网站根目录地址</param>
public static void SwitchCSS(Page page,string CSSFilePath)
{
HtmlLink link = new HtmlLink();
link.Href = CSSFilePath;
link.Attributes["rel"] = "stylesheet";
link.Attributes["type"] = "text/css";
page.Header.Controls.Add(link);
}
#endregion
}
调用代码:
CSSService.SwitchCSS(Page, Common.CSSFilePath);
注意:CSS中使用类来控制元素的表现形式,否则CSS不会起效。在此感谢wuyq11 提供的网址,非常感谢時空逸夢。