代码之家  ›  专栏  ›  技术社区  ›  Charlie

检测控件集合中是否存在控件

  •  0
  • Charlie  · 技术社区  · 17 年前

    抱歉不够清晰我意识到我可以迭代控件集合,只是在寻找更好/更有效的方法。

    我试图在运行时动态地将一些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。

    谢谢

    2 回复  |  直到 17 年前
        1
  •  2
  •   Sascha    17 年前

        2
  •  2
  •   Canavar    17 年前

    对于 您可以使用以下选项:

    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。

    此外,这可能有助于在标头的控件集合中查找文字控件:

    Page.Header.FindControl("your_literals_id");
    
    推荐文章