更新: 对于缺乏清晰度的道歉我意识到我可以迭代控件集合,只是在寻找更好/更有效的方法。
我试图在运行时动态地将一些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是否会查找对象的这个实例(我假设这是失败的原因)?
有没有办法检查特定ID的控件集合?或者我将不得不编写一个子循环遍历集合中的现有控件来检查id。
由于
答案 0 :(得分: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 集合,并寻找主要文件 href的 HtmlLink 。 / p>
编辑:这也可能有助于在标头的控件集合中找到您的文字控件:
Page.Header.FindControl("your_literals_id");
答案 1 :(得分:2)
可能遍历Controls集合并测试ID属性。如果找到,记住并打破。从来没有在ASP.NET中,但在WinForms和WPF中。