我有一個aspx頁面,有兩個不同的用戶控件。我想找到用戶控件,並能夠設置屬性等,從用戶控制B.如何從單獨的用戶控件查找和與頁面上的用戶控件進行交互?
我想我可以做這樣的事情:
Dim CMFilters As Control = Me.Parent.FindControl("CMFilters")
...但是,這並不工作能夠設置屬性和調用方法。我以某種方式需要獲得用戶控件,並將其聲明爲該用戶控件類型。
我有一個aspx頁面,有兩個不同的用戶控件。我想找到用戶控件,並能夠設置屬性等,從用戶控制B.如何從單獨的用戶控件查找和與頁面上的用戶控件進行交互?
我想我可以做這樣的事情:
Dim CMFilters As Control = Me.Parent.FindControl("CMFilters")
...但是,這並不工作能夠設置屬性和調用方法。我以某種方式需要獲得用戶控件,並將其聲明爲該用戶控件類型。
你不應該控制從屬控制B的
相反,從包含該控件的頁面讀取和寫入兩個控件的屬性。
因此,要將控件A和B中要設置的所有屬性公開爲public
屬性(讀/寫或只讀)並將它們連接在您頁面的Page_Load
事件中。
有一篇文章here解釋如何做到這一點。
我想指出,這不被視爲一個好設計。這是被稱爲「代碼味道」的那種類型。作爲一般的經驗法則,對象應該設計成不知道其他對象,並且可以獨立於其他對象運行。
一個更好的方法是簡單地讓對象完成它們獨立完成的工作,並讓頁面類處理交互,因爲每個對象都是頁面的子元素。
這種設計被列爲一個代碼味道在這裏:
http://www.codinghorror.com/blog/2006/05/code-smells.html
不適當的親密關係
注意那些花太多時間在一起,不合適的方式該接口的類或類 。對於彼此,類別應該只知道 。