主页控制列表仅返回一些控件

时间:2013-04-16 10:40:56

标签: c# asp.net

我的ASP.Net页面有点问题。

我正在尝试从母版页代码中的母版页获取所有控件。

我使用此代码

在子页面上执行了此操作
foreach (Control ctrl in ContentPlaceHolder1.Controls)
{
    if (ctrl.GetType() == typeof(Label))
    {
        //Do Stuff...
    }
}

但是当我尝试使用

获取其他控件时
foreach (Control ctrl in this.form1.Controls)

它完全无法正常工作。

我得到了3个标签,但无法访问其他标签。

这是我的ASP代码的一部分

<div style="float: right;">
    <ul class="main-language language-level main-language-level-0" >
        <li><a href="">
                <asp:Label runat="server" Text="Deutschland" ID="lbl_Language"/>
            </a>
            <ul class="language-level main-language-level-1">
                <li>
                    <a href="?Lng=EN">
                        <asp:Label ID="lbl_English" runat="server" Text="United Kingdom" ForeColor="#0D679C" Font-Names="Century Gothic" />
                    </a> 
                    <span>English</span>
                </li>
                <li>
                    <a href="?Lng=DE">
                        <asp:Label ID="lbl_German" runat="server" Text="Deutschland" ForeColor="#0D679C" Font-Names="Century Gothic" />
                    </a>
                    <span>Deutsch</span>
                </li>
            </ul>
            <img class="menu-image" src="Images/arrow_languageselection.png" />
        </li>
    </ul>
    <br />
    <a href="CustomerServiceLogin.aspx?Lgn=22TR" runat="server" id="LogLink">
        <asp:Label CssClass="ButtonOrange" runat="server" ID="lbl_Login" />
        <asp:Label CssClass="ButtonOrange" runat="server" ID="lbl_Logoff" Visible="false" />
    </a>
</div>

我能找到的唯一标签是lbl_Languagelbl_Englishlbl_German

有人为此解决了问题吗?

此致

CarnVanBeck

1 个答案:

答案 0 :(得分:1)

如果您无法访问的标签嵌套在另一个控件中,那么当您遍历form1.controls时,它们将不会被返回。您将需要一个递归解决方案来返回所有控件。

foreach (Control ctrl in this.form1.Controls)
{
    if (ctrl.Controls.Count > 0)
    {
        // do recursive call
    }
}