如有<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title>无标题页</title>
</head>
<body>
    <form id="form1" runat="server">
    </form>
</body>
</html>用什么方法可以在后台注册一条CSS样式
<link href="/CSS/Style.css" rel="stylesheet" type="text/css" />
到head中了
结果为<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title>无标题页</title>
    <link href="/CSS/Style.css" rel="stylesheet" type="text/css" />
</head>
<body>
    <form id="form1" runat="server">
    </form>
</body>
</html>
------------------------------------
我用的方法如下HtmlLink lnkCss = new HtmlLink();
lnkCss.Attributes["type"] = "text/css";
lnkCss.Attributes["rel"] = "stylesheet";
lnkCss.Attributes["href"] = "/CSS/Style.css";            
((Page)System.Web.HttpContext.Current.Handler).Header.Controls.Add(lnkCss);            以上可以实现,但是有一个问题就是
因为我的head有时候会写即本代码块
如<head runat="server">
    <title>无标题页</title>
    <%= Keyword %>
</head>如果页面像上面这样的话,执行添加CSS,就会报错

控件包含代码块(即 <% ... %>),因此无法修改控件集合。 
如上面这样,怎样才是最好的解决办法呢谢谢

解决方案 »

  1.   

    Page.ClientScript.RegisterClientScriptInclude
      

  2.   

    看错,sorry,以为注册脚本了
      

  3.   

    就算是脚本用
    Page.ClientScript.RegisterClientScriptInclude
    这个也注册不到head中
    他都是在form中
    谢谢
      

  4.   

    你把 <%= Keyword %>
    换成 asp:Literal控件,在后台代码直接给asp:Literal的Text属性符Keyword的值就可以了
      

  5.   

    控件包含代码块(即 <% ... %>),因此无法修改控件集合。 出现在这个问题是因为你的head加了runat="server",在加了这个属性的控件的内部无法再用<% ... %>来绑定代码所以,如果你的head加了runat="server"就用第一种方法,如果没有加,就可以用第二种
      

  6.   

    出现在这个问题是因为你的head加了runat="server",在加了这个属性的控件的内部无法再用 <% ... %>来绑定代码 
    -----------------
    RE:这一句应该是错的
    应该是,加了runat="server"后,才可以动态添加控件,但当在runat="server"中有了<%=..%>即时代码的时候就无法修改控件集合但问题是我现在要兼顾这两种情况要怎么做呢
    谢谢主要就是用什么方法,不是Control.Add的方法把我的<link css ... />添加到head当中谢谢
      

  7.   

        public void AddStyle(string styleUrl)
        {
            HtmlLink link = new HtmlLink();
            link.Href = styleUrl;
            link.Attributes["text"] = "text/css";
            link.Attributes["rel"] = "stylesheet";        Page.Controls.Add(link);
        }
      

  8.   

    RE:楼上的,我要把他添加到head中
    谢谢
      

  9.   

    再说
    Page.Controls.Add(link);
    ----------------------
    那我的page中也有即时代码块的话怎么办?
    所以用controls.add总是感觉不是很好谢谢
      

  10.   

    header设定成runat="server"然后就可以通过代码加了
      

  11.   

    RE:header设定成runat="server"然后就可以通过代码加了
    --------------
    前提是header中不能有<%= %>
      

  12.   

    RE:用Literal
    ---------------
    我是想做成一个方法,这个方法直接执行就行了
    如果要用一个Literal的话
    我就直接考到页面里就行了谢谢
      

  13.   

    参考:
    http://www.cnblogs.com/insus/articles/1419154.html
      

  14.   

       /// <summary>
            /// 用于写出发送给浏览器的控件标记
            /// </summary>
            /// <param name="writer">System.Web.UI.HtmlTextWriter对象</param>
            protected override void Render(System.Web.UI.HtmlTextWriter writer)
            {
                this.RegisterScript("Common.js");
                this.RegisterCss(="/CSS/Style.css");
                string redirecturl = Common.RequestFilter.GetQueryString("redirecturl");
                base.Render(writer);
            }
            #endregion    /// <summary>
            /// 注册脚本
            /// </summary>
            protected virtual void RegisterScript(string scriptfile)
            {
                //注册JQuery脚本文件
                if (!ClientScript.IsStartupScriptRegistered(this.GetType(), scriptfile))
                {
                    ClientScript.RegisterStartupScript(this.GetType(), scriptfile, "<script  type=\"text/javascript\" charset=\"gb2312\" src=\"/Js/" + scriptfile + "\"></script>");
                }
            }
      

  15.   

    HtmlLink类就是向head里面添加<link>标签的。
      

  16.   

    publicvoid AddStyle(string styleUrl)
        {
            HtmlLink link=new HtmlLink();
            link.Href= styleUrl;
            link.Attributes["text"]="text/css";
            link.Attributes["rel"]="stylesheet";        Page.Header.Controls.Add(link);
        }