通过 AssociatedControlID 从文本框访问标签

Accessing a Label from a Textbox through AssociatedControlID

提问人:Cato Johnston 提问时间:8/17/2009 更新时间:10/21/2018 访问量:1861

问:

如果我有一个标签、一个文本框和一个标签

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

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

C# asp.net

评论


答:

3赞 womp 8/17/2009 #1

这是可能的,但可能没有你想要的那么容易。任何地方都没有显示“这些是具有此 AssociatedControlID 值的所有控件”的集合。您需要以递归方式循环访问页面中的所有控件,并检查 AssociatedControlID 属性是否为标签。

你想完成什么?我知道您特别询问了有关代码隐藏的问题,但是如果最终结果是您正在尝试操作UI,我会考虑使用jQuery,因为使用一行javascript,您将能够选择页面上具有.for = "txtName"

0赞 Jeremy Wiggins 6/29/2012 #2

可以使用 LINQ 执行此操作。

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

如果有多个控件与该特定文本框关联,则使用 而不是 .Where()SingleOrDefault()