我的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_Language
,lbl_English
和lbl_German
有人为此解决了问题吗?
此致
CarnVanBeck
答案 0 :(得分:1)
如果您无法访问的标签嵌套在另一个控件中,那么当您遍历form1.controls时,它们将不会被返回。您将需要一个递归解决方案来返回所有控件。
foreach (Control ctrl in this.form1.Controls)
{
if (ctrl.Controls.Count > 0)
{
// do recursive call
}
}