C# 在Asp.Net中以编程方式添加样式表
我想在head部分以编程方式添加样式表,但我看到的一个示例似乎需要很多行代码才能只添加一个样式表,尽管我可能需要很多: 示例代码: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.
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”,否则代码将找不到它。对于图标: