一尘不染

在Asp.Net中以编程方式添加StyleSheets

css

我想在头部分中以编程方式添加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()方法,但是它也不起作用。对象null抛出了错误。

我也使用了Page.Header.InnerHtmlInnerText += "<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);
   }
}

起初它起作用,但是当我更改页面时,它停止工作。

我正在使用“母版页”,并且正在Master.cs文件中编写这些代码,也有人建议使用它们this.Header代替,Page.Header但是在我构建它时会引发错误,表明我无法这样声明。

添加许多样式并不难。

它变得越来越复杂。


阅读 217

收藏
2020-05-16

共1个答案

一尘不染

好的,这是我当前正在使用的解决方案:

我创建了一个帮助器类:

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);
//...

因此,我可以用一行简单的代码添加任意数量的内容。

它还适用于母版页和内容页关系。

希望能帮助到你。

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

2020-05-16