Определение наличия элементов управления в коллекции элементов управления
ОБНОВЛЕНИЕ: Извинения за отсутствие ясности Я понимаю, что мог бы перебрать коллекцию элементов управления, просто искал лучший / более эффективный метод.
Я пытаюсь динамически добавлять некоторые элементы css и js на страницу ASP.Net во время выполнения, но так как этот код используется в элементах управления множеством элементов, мне нужно убедиться, что соответствующие ссылки вводятся только один раз.
В настоящее время у меня есть следующий код в событии OnPreRender.
Dim head As HtmlControls.HtmlHead = Me.Parent.Page.Header
If Not _useCustomStyles Then
Dim litCustomCss As New LiteralControl("<link rel=" & Chr(34) & "stylesheet" & Chr(34) & " href=" & Chr(34) & "/css/udPart_core.css" & Chr(34) & " type=" & Chr(34) & "text/css" & Chr(34) & " media=" & Chr(34) & "screen" & Chr(34) & " />" & vbCrLf)
litCustomCss.ID = "cssCustom"
If Not head.Controls.Contains(litCustomCss) Then
head.Controls.Add(litCustomCss)
End If
End If
Ищет ли.Contains этот экземпляр объекта (который, как я полагаю, является причиной сбоя)?
Есть ли способ проверить коллекцию элементов управления для определенного идентификатора? Или я собираюсь написать подпрограмму, чтобы просмотреть существующие элементы управления в коллекции, проверяя идентификатор.
Спасибо
2 ответа
Для внешних источников скриптов вы можете использовать это:
if (!ClientScript.IsClientScriptIncludeRegistered("externalResuorce"))
{
ClientScript.RegisterClientScriptInclude("externalResuorce",
"scripts/myscripts.js");
}
Но для файлов таблиц стилей вы можете использовать это:
HtmlLink link = new HtmlLink();
link.Href = "main.css";
link.Attributes["type"] = "text/css";
link.Attributes["rel"] = "stylesheet";
Page.Header.Controls.Add(link);
и, чтобы контролировать, может быть, вы должны зациклить коллекцию Page.Header.Controls и найти HtmlLink с main.css href.
РЕДАКТИРОВАТЬ: Также это может помочь найти ваш буквальный элемент управления в коллекции элементов управления заголовка:
Page.Header.FindControl("your_literals_id");
Может быть, перебрать коллекцию Controls и проверить свойство ID. Если найден, запомни и сломай. Никогда не делал этого в ASP.NET, но в WinForms и WPF.