网上不少文章关于动态切换CSS的都是使用JavaScript脚本或C#脚本切换link元素的href属性,但是我用了母板页,由于在母板页中使用了ContentPlaceHoder,子页面的所有标记必须处于ContentPlaceHolder中,否则就会出错。又由于在ContentPlaceHoder中不能插入Link标记,所以这个问题很难办啊,请高手来指点迷津。

解决方案 »

  1.   

    有母版中切换CSS文件都是有效的。
      

  2.   

    参考
    http://www.cnblogs.com/MICRONET/archive/2006/05/23/406974.html
    http://www.cnblogs.com/lincats/archive/2008/11/24/1150720.html
      

  3.   

    是可以插入,但是有这个错误:无法切换视图: 验证 (XHTML 1.0 Transitional): 元素“link”不能嵌套在元素“div”中。编译没有错误,但设计视图就进不去了,而且并没有起到链接外部CSS的作用。
      

  4.   

    已经解决了,参考地址:http://www.cnblogs.com/MICRONET/archive/2006/05/23/406974.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 提供的网址,非常感谢時空逸夢