通过AssociatedControlID从文本框访问标签

时间:2009-08-16 22:38:40

标签: c# asp.net

如果我有标签,文本框和标签

<asp:Label ID="Label1" runat="server" Text="Name" AssociatedControlID="txtName"></asp:Label>
<asp:TextBox ID="txtName" runat="server" CssClass="textbox"></asp:TextBox>

从代码隐藏中,可以访问将文本框列为关联控件的控件。

2 个答案:

答案 0 :(得分:3)

这是可能的,但可能并不像你想的那么容易。在任何地方都没有集合说“这些都是具有此AssociatedControlID值的控件”。您需要loop over all the controls in the page recursively并检查AssociatedControlID属性(如果它是标签。

你想要完成什么?我知道你特别询问了代码隐藏的问题,但如果最终结果是你试图操纵UI,我会考虑使用jQuery,就像使用单行javascript一样,你可以选择所有元素在页面上有for = "txtName"

答案 1 :(得分:0)

你可以使用LINQ来做到这一点。

var label = Page.Controls
                .Cast<Control>()
                .SingleOrDefault(c => c.GetType() == typeof(Label) &&
                                      ((Label)c).AssociatedControlID == "txtName");

如果您有多个与该特定文本框关联的控件,请使用Where()代替SingleOrDefault()