0

更新:对缺乏清晰度表示歉意,我意识到我可以遍历控件集合,只是在寻找更好/更有效的方法。

我正在尝试在运行时将一些 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。

谢谢

4

2 回答 2

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集合并寻找具有main.css href的HtmlLink 。

编辑:这也可能有助于在标题的控件集合中找到您的文字控件:

Page.Header.FindControl("your_literals_id");
于 2009-03-12T12:07:42.590 回答
2

也许循环通过 Controls 集合并测试 ID 属性。如果找到,请记住并打破。从来没有在 ASP.NET 中这样做过,但是在 WinForms 和 WPF 中。

于 2009-03-12T12:08:05.427 回答