我有一个aspx页面,它有两个不同的用户控件。我想找到用户控件A,并能够从用户控件B中设置属性等。
我以为我可以这样做:
Dim CMFilters As Control = Me.Parent.FindControl("CMFilters")
...但是这不能用于设置属性和调用方法。我不知何故需要获得用户控件并将其声明为该用户控件类型。
答案 0 :(得分:2)
你不应该让控制A依赖于控制B。
相反,从包含控件的页面读取和写入两个控件的属性。
因此,将要在控件A和B中设置的所有属性公开为public
属性(读/写或只读)并将它们连接起来,例如在您网页的Page_Load
事件中。
答案 1 :(得分:0)
有一篇文章here解释了如何做到这一点。
我想指出,这不是一个好的设计。这是一种被称为“代码气味”的东西。作为一般经验法则,对象的设计应使其不知道其他对象,并且可以独立于其他对象运行。
更好的方法是简单地让对象独立完成它们所做的事情,让页面类处理交互,因为每个对象都是页面的子元素。
此设计在此处列为代码味道:
http://www.codinghorror.com/blog/2006/05/code-smells.html
不恰当的亲密关系
注意花费太多时间在一起的课程或课程 那个界面以不恰当的方式。课程应该尽可能少知道 彼此可能。