Как сохранить css для конкретного элемента управления с управляющим кодом (ASP.NET) - PullRequest
2 голосов
/ 18 февраля 2012

Если я пишу элемент управления ASCX, и этот элемент управления имеет разметку, для которой требуется CSS, и этот CSS будет использоваться только самим элементом управления, есть ли элегантный способ (кроме того, что он вставлен в сам файл ASCX) для включить в него файл .css?

В идеале, я бы использовал control.ascx, control.ascx.cs, control.js и control.css как маленький "пакет".

Это поднимает одну проблему и одну проблему до сих пор:

Проблема: так как элемент управления находится в подкаталоге, я не хочу использовать тег, жестко закодированный со знанием, что CSS находится в подпапке. Я хотел бы написать его так, чтобы он относился к управляющему коду (то есть к той же папке), но все еще находился во время выполнения.

Беспокойство: если бы я сделал это для десяти элементов управления, я полагаю, это еще десять попаданий на сервер. Может быть, ScriptManager или RadScriptManager или RadStyleSheet manager будут волшебным образом их агрегировать, но это не для меня в любом случае.

Есть идеи, как решить проблему относительного пути?

1 Ответ

0 голосов
/ 18 февраля 2012

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

HtmlLink link = new HtmlLink();
link.Href = this.ResolveClientUrl("control.css"); // same directory as the control
link.Attributes["type"] = "text/css";
link.Attributes["rel"] = "stylesheet";
this.Page.Header.Controls.Add(link);

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

...