在Asp.Net中以编程方式添加StyleSheets
我想在头部以编程方式添加StyleSheets,但我看到的一个示例似乎需要多行代码才能添加一个样式表,即使我可能需要很多:
示例代码:
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);
我也使用Page.Header.RenderControl()
方法,但它也没有用。 Object null抛出了一些错误。
我还使用了Page.Header.InnerHtml
和InnerText += "
但是他们抛出了Literal错误,这是我认为常见的错误。
我用过这段代码:
List cssFiles = new List(); cssFiles.Add(new Literal() { Text = @"" }); cssFiles.Add(new Literal() { Text = @"" }); AddStyleRange(cssFiles); private void AddStyleRange(List cssFiles) { foreach (Literal item in cssFiles) { this.Header.Controls.Add(item); } }
它最初工作,但当我更改页面时它停止工作。
我正在使用Master Page,我正在Master.cs
文件中编写这些代码,也有人建议使用this.Header
而不是Page.Header
但是当我构建它时抛出一个错误,说我不能这样声明。
添加许多样式应该不难。
它变得越来越复杂。
好的,这是我目前使用的解决方案:
我创建了一个帮助类:
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 = @"" }; 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); //...
所以我可以用一行简单的代码添加我想要的内容。
它还适用于母版页和内容页面关系。
希望能帮助到你。
PS:我不知道这个和其他解决方案之间的性能差异,但它看起来更优雅,更容易消费。
我会贴上对我有用的东西:
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);
即使我对此进行了大量搜索,我也会在点击按钮时添加一个重写样式表。 我使用了上面的代码,它对我很有用。
我定义了一个通用的HTML 并以编程方式设置href属性。
例如,在页面中,我有:
.
然后在Page_Load中设置cssStyle的Href属性:
cssStyle.Href = "path/to/Styles.css";
看起来有点清洁,因为设计控制将按所需顺序放置。
我走了一步,我想要一个让我无法添加包含重复项的方法,比如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);
对于我写的完整文章: http : //www.idea-r.it/Blog.aspx? Article = 49