如何从单独的用户控件中查找页面上的用户控件并与之交互?

时间:2011-10-17 21:39:41

标签: asp.net vb.net

我有一个aspx页面,它有两个不同的用户控件。我想找到用户控件A,并能够从用户控件B中设置属性等。

我以为我可以这样做:

Dim CMFilters As Control = Me.Parent.FindControl("CMFilters")

...但是这不能用于设置属性和调用方法。我不知何故需要获得用户控件并将其声明为该用户控件类型。

2 个答案:

答案 0 :(得分:2)

你不应该让控制A依赖于控制B。

相反,从包含控件的页面读取和写入两个控件的属性。

因此,将要在控件A和B中设置的所有属性公开为public属性(读/写或只读)并将它们连接起来,例如在您网页的Page_Load事件中。

答案 1 :(得分:0)

有一篇文章here解释了如何做到这一点。

我想指出,这不是一个好的设计。这是一种被称为“代码气味”的东西。作为一般经验法则,对象的设计应使其不知道其他对象,并且可以独立于其他对象运行。

更好的方法是简单地让对象独立完成它们所做的事情,让页面类处理交互,因为每个对象都是页面的子元素。

此设计在此处列为代码味道:

http://www.codinghorror.com/blog/2006/05/code-smells.html

  

不恰当的亲密关系

     

注意花费太多时间在一起的课程或课程   那个界面以不恰当的方式。课程应该尽可能少知道   彼此可能。