如何在c#net中通过ClientID找到控件?
我正在尝试编写一个通用函数,它将搜索给定父级中的所有表单输入控件,以便稍后重新填充表单的值 我将每个控件的ID和值存储在cookie中,并通过使用如何在c#net中通过ClientID找到控件?,c#,asp.net,findcontrol,clientid,C#,Asp.net,Findcontrol,Clientid,我正在尝试编写一个通用函数,它将搜索给定父级中的所有表单输入控件,以便稍后重新填充表单的值 我将每个控件的ID和值存储在cookie中,并通过使用FindControl(ID)在设置控件值之前定位控件来重新填充控件 除了我有一个usercontrol的多个实例(其中有子控件)之外,所有这些都可以正常工作 例如,DateRange控件定义了两个文本框 <asp:TextBox ID="txtDateFrom" /> <asp:TextBox ID="txtDateTo" /&
FindControl(ID)
在设置控件值之前定位控件来重新填充控件
除了我有一个usercontrol的多个实例(其中有子控件)之外,所有这些都可以正常工作
例如,DateRange控件定义了两个文本框
<asp:TextBox ID="txtDateFrom" />
<asp:TextBox ID="txtDateTo" />
然后在我的表单中,如果我有两个DateRange控件
<my:daterange id="DateRangeA" />
<my:daterange id="DateRangeB" />
…我现在有2个文本框,它们的ID都是txtDateFrom
(和2xtxtDateTo
),因此我既不能在cookie中存储这两个值(因为它们的ID不是唯一的),也不能使用FindControl()
再次检索控件
我想要的是类似于FindControl(ID)
,但是使用CLIENTID,这样我就可以区分不同usercontrols中具有相同ID的子控件
我不同意必须手动存储所有控件的完整路径(以某种方式),然后使用FindControl(IDa).FindControl(IDb).FindControl(IDc)…
(或其他)深入到子控件
一定有更简单的方法吧
还是我的做法完全错了?感谢您的建议。让您的控件实现 文章说, 实现此接口的任何控件都会在 所有子控件ID属性都保证是唯一的 在整个应用程序中
另外,请检查此项。Hmm。好的,我试过了,虽然呈现给HTML元素的ID现在确实是唯一的,但代码后面可访问的ID没有改变。谢谢你的建议。同时,我选择了一种(黑客)解决方法,并通过
PARENTID+“>”+ID
存储每个控件,无论它是否需要它。因此,以下内容足以一致地定位我可能使用的任何控件:FindControl(PARENTID)。FindControl(ID)