Я использую рев кода для динамичного включения файла CSS:
HtmlHead head = (HtmlHead)Page.Header;
HtmlLink link = new HtmlLink();
link.Attributes.Add("href", Page.ResolveClientUrl("~/App_Themes/Default/StyleSheet.css"));
link.Attributes.Add("type", "text/css");
link.Attributes.Add("rel", "stylesheet");
head.Controls.Add(link);
Проблема: Я хочу сделать это только однажды, и только если это не alrealy, включенный в страницу.
Как я проверяю, включено ли это уже?
Править:
Ответы говоря мне включать в использование загрузки страницы !IsPostBack
не решит мою проблему, как этот код будет в Управлении Интернет-пользователя, и моя страница может иметь много того же пользовательского элемента управления.
Например, я использую код ниже, чтобы сделать это с JavaScript:
if (!Page.ClientScript.IsClientScriptIncludeRegistered("jsScript"))
{
Page.ClientScript.RegisterClientScriptInclude("jsScript", ResolveUrl("~/Utilities/myScript.js"));
}
Это ...
я использовал следующий код:
Boolean cssAlrealyIncluded = false;
HtmlLink linkAtual;
foreach (Control ctrl in Page.Header.Controls)
{
if (ctrl.GetType() == typeof(HtmlLink))
{
linkAtual = (HtmlLink)ctrl;
if (linkAtual.Attributes["href"].Contains("datePicker.css"))
{
cssAlrealyIncluded = true;
}
}
}
if (!cssAlrealyIncluded)
{
HtmlLink link = new HtmlLink();
link.Attributes.Add("href", ResolveUrl("~/Utilities/datePickerRsx/datePicker.css"));
link.Attributes.Add("type", "text/css");
link.Attributes.Add("rel", "stylesheet");
Page.Header.Controls.Add(link);
}
В большинстве случаев вас не должно волновать, если CSS будет включен более одного раза. Обычно это не проблема.
EDIT: Порядок имеет значение, только если вам нужно иметь возможность переопределять стили css в последующих таблицах стилей.
В ASP.NET вы можете включить CSS в вашу главную страницу (при условии, что у вас есть такая страница), и тогда он будет гарантированно включен только один раз. Поскольку мастер-страницы доступны программно (даже из пользовательских элементов управления), вы можете даже написать некоторые свойства (или методы), которые позволят вам контролировать, какие внешние CSS-стили включать, когда.
Почему бы не добавить в свой пользовательский элемент управления значение HttpContext.Current.Items, указывающее, что таблица стилей уже включена? Это избавит вас от необходимости просматривать каждый элемент управления заголовком для каждого экземпляра пользовательского элемента управления.