Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/36.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在Asp.Net中以编程方式添加样式表_C#_Asp.net_Css - Fatal编程技术网

C# 在Asp.Net中以编程方式添加样式表

C# 在Asp.Net中以编程方式添加样式表,c#,asp.net,css,C#,Asp.net,Css,我想在head部分以编程方式添加样式表,但我看到的一个示例似乎需要很多行代码才能只添加一个样式表,尽管我可能需要很多: 示例代码: HtmlLink css = new HtmlLink(); css.Href = "css/fancyforms.css"; css.Attributes["rel"] = "stylesheet"; css.Attributes["type"] = "text/css"; css.Attributes["media"] = "all"; Page.Header.

我想在head部分以编程方式添加样式表,但我看到的一个示例似乎需要很多行代码才能只添加一个样式表,尽管我可能需要很多:

示例代码:

HtmlLink css = new HtmlLink();
css.Href = "css/fancyforms.css";
css.Attributes["rel"] = "stylesheet";
css.Attributes["type"] = "text/css";
css.Attributes["media"] = "all";
Page.Header.Controls.Add(css);
using System.Web.UI;
using System.Web.UI.WebControls;

namespace BusinessLogic.Helper
{
    public class CssAdder
    {
        public static void AddCss(string path, Page page)
        {
            Literal cssFile = new Literal() { Text = @"<link href=""" + page.ResolveUrl(path) + @""" type=""text/css"" rel=""stylesheet"" />" };
            page.Header.Controls.Add(cssFile);
        }
    }
}
CssAdder.AddCss("~/Resources/Styles/MainMaster/MainDesign.css", this.Page);
CssAdder.AddCss("~/Resources/Styles/MainMaster/MainLayout.css", this.Page);
CssAdder.AddCss("~/Resources/Styles/Controls/RightMainMenu.css", this.Page);
//...
我还使用了
Page.Header.RenderControl()
方法,但它也不起作用。对象null引发了一个错误


我还使用了
Page.Header.InnerHtml
InnerText+=”我将粘贴对我有用的东西:

HtmlLink link = new HtmlLink();
//Add appropriate attributes
link.Attributes.Add("rel", "stylesheet");
link.Attributes.Add("type", "text/css");
link.Href = "/Resources/CSS/NewStyles.css";
link.Attributes.Add("media", "screen, projection");
//add it to page head section
this.Page.Header.Controls.Add(link);

即使我在这方面搜索了很多,我还是希望在单击按钮时添加一个覆盖样式表。我使用了上面的代码,它对我来说非常有效。

好的,下面是我当前使用的解决方案:

我创建了一个助手类:

HtmlLink css = new HtmlLink();
css.Href = "css/fancyforms.css";
css.Attributes["rel"] = "stylesheet";
css.Attributes["type"] = "text/css";
css.Attributes["media"] = "all";
Page.Header.Controls.Add(css);
using System.Web.UI;
using System.Web.UI.WebControls;

namespace BusinessLogic.Helper
{
    public class CssAdder
    {
        public static void AddCss(string path, Page page)
        {
            Literal cssFile = new Literal() { Text = @"<link href=""" + page.ResolveUrl(path) + @""" type=""text/css"" rel=""stylesheet"" />" };
            page.Header.Controls.Add(cssFile);
        }
    }
}
CssAdder.AddCss("~/Resources/Styles/MainMaster/MainDesign.css", this.Page);
CssAdder.AddCss("~/Resources/Styles/MainMaster/MainLayout.css", this.Page);
CssAdder.AddCss("~/Resources/Styles/Controls/RightMainMenu.css", this.Page);
//...
因此,我可以用一行简单的代码添加任意多的内容

它还可以处理母版页和内容页的关系

希望能有帮助


p.S:我不知道此解决方案与其他解决方案之间的性能差异,但它看起来更优雅、更易于使用。

我跨了一步,我想要一种方法,使我无法添加包含重复项,比如
ClientScriptManager.RegisterClientScriptInclude()
。 解决方案是为添加到Header部分的控件提供一个ID

if (!String.IsNullOrEmpty(Key))
     if (Page.Header.FindControl(Key) != null) return;

HtmlLink link = new HtmlLink();
if (!String.IsNullOrEmpty(Key)) link.ID = Key;
link.Href = StyleUrl; 
link.Attributes.Add("type", "text/css"); 
link.Attributes.Add("rel", "stylesheet");
Page.Header.Controls.Add(link);

对于我写的完整文章:

我定义了一个通用的HTML
,并以编程方式设置href属性

例如,在
页面中,我有:

<link id="cssStyle" runat="server" rel="stylesheet" type="text/css" />.

从设计控制的角度来看,将
按所需顺序放置似乎更简洁了一些。

顺便说一句,我使用了母版页,按钮在页脚;粘贴的代码也是如此。我发现了一个问题:确保您的标签已运行at=“server”,否则代码将找不到它。对于图标: