Динамическое добавление файла CSS из серверного элемента управления ASP.NET - PullRequest
8 голосов
/ 15 апреля 2010

У меня есть пользовательский элемент управления, и я хочу динамически вставить ссылку на таблицу стилей.

Возможно, это не лучшее решение года, но оно должно быть сделано. Есть идеи как это сделать?

Каждый раз, когда я пытаюсь, Page.Header равен нулю.

Ответы [ 2 ]

19 голосов
/ 15 апреля 2010

Вот как вы обычно добавляете CSS программно:

protected void Page_Init(object sender, EventArgs e)
{
    var link = new HtmlLink();
    link.Href = "~/styles/main.css";
    link.Attributes.Add("rel", "stylesheet");
    link.Attributes.Add("type", "text/css");
    Page.Header.Controls.Add(link);
}

Возможно, вам понадобится ввести runat="server" в тег head:

<head runat="server">
    <title>Add CSS example</title>
</head>
8 голосов
/ 21 марта 2012

Чтобы избежать проблемы нескольких таблиц стилей при добавлении элемента управления 10 раз на страницу, слегка измените приведенный выше код:

string styleSheet = "stylesheetName.css";
if (this.Page.Header.FindControl(styleSheet) == null)
{
    HtmlLink cssLink = new HtmlLink();
    cssLink.ID = styleSheet;
    cssLink.Href = "~/styles/" + styleSheet;
    cssLink.Attributes.Add("rel", "stylesheet");
    cssLink.Attributes.Add("type", "text/css");
    this.Page.Header.Controls.Add(cssLink);
}

Предоставляя элементу управления идентификатор, вы можете проверить, существует ли он уже, и убедиться, что вы добавляете его только один раз.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...