在aspx中找到一个ascx控件

时间:2011-12-02 10:39:10

标签: asp.net vb.net ascx findcontrol

我正在以下列方式在我的aspx上找到ascxcontrol的下拉列表。

Dim cp As ContentPlaceHolder = DirectCast(Page.Form.FindControl("ContentPlaceHolder1"), ContentPlaceHolder)
Dim ascx As UserControl = DirectCast(cp.FindControl("drpType"), UserControl)
Dim drpType As DropDownList = DirectCast(ascx.FindControl("drpType"), DropDownList)

是否有更快的方式而无需访问页面上的所有元素?

3 个答案:

答案 0 :(得分:0)

如果你知道包含控件的命名是什么,你可以去

ucNamingContainerControl.FindControl(controlId)

这至少会将其限制在页面的该部分。

否则我能想到的另一件事是你是否正在访问一组预定义的控件 - 将它们放在Dictionary集合中并使用Find方法来挑选它们。可能是一个更快的检索,但在页面上可能看起来有点笨拙。

答案 1 :(得分:0)

我不会尝试以这种方式引用用户控件中的控件,用户控件应该封装这些控件,页面应该与公共属性对话。

答案 2 :(得分:0)

取决于你想要做什么。

如果没有大量的上下文,我只能假设您要么获取或设置下拉列表的值。

我不会使用你想要的方法。它引入了实现特定耦合的元素。

通过可以从.aspx页面调用的属性来暴露你需要获取/设置的内容会好得多。

但是,在回答您的问题时,如果您要从.aspx页面引用下拉列表,则必须使用FindControl。