我想以编程方式在head部分添加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);
Run Code Online (Sandbox Code Playgroud)
我也使用Page.Header.RenderControl()方法,但它也没有用.Object null抛出了一些错误.
我还使用了Page.Header.InnerHtml和InnerText += "<link .... "/>事,但他们扔了文字错误这是我觉得常见的错误.
我用过这段代码:
List<Literal> cssFiles = new List<Literal>();
cssFiles.Add(new Literal() { Text = @"<link href=""" + ResolveUrl("~/Resources/Styles/MainMaster/MainDesign.css") + @""" type=""text/css"" rel=""stylesheet"" />" });
cssFiles.Add(new Literal() { Text = @"<link href=""" + ResolveUrl("~/Resources/Styles/MainMaster/MainLayout.css") + @""" type=""text/css"" rel=""stylesheet"" />" });
AddStyleRange(cssFiles);
private void AddStyleRange(List<Literal> cssFiles)
{
foreach (Literal item in cssFiles)
{
this.Header.Controls.Add(item);
}
}
Run Code Online (Sandbox Code Playgroud)
它起初工作,但当我更改页面时它停止工作.
我正在使用母版页,我正在编写这些代码Master.cs文件,也有人推荐使用this.Header而不是,Page.Header但是当我构建它时抛出一个错误,说我不能这样声明.
添加许多样式应该不难.
它变得越来越复杂.
Tar*_*rik 44
好的,这是我目前使用的解决方案:
我创建了一个帮助类:
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);
}
}
}
Run Code Online (Sandbox Code Playgroud)
然后通过这个助手类,我所要做的就是:
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);
//...
Run Code Online (Sandbox Code Playgroud)
因此,我可以使用一行简单代码添加尽可能多的内容.
它还适用于母版页和内容页面关系.
希望能帮助到你.
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);
Run Code Online (Sandbox Code Playgroud)
即使我在此搜索了很多,我也会在点击按钮时添加一个重写样式表.我使用了上面的代码,它对我很有用.
| 归档时间: |
|
| 查看次数: |
45153 次 |
| 最近记录: |