![](/img/trans.png)
[英]To call a method in usercontrol from another user control in asp.net
[英]Unable to call an ASP.NET user control from another
我希望從另一個用戶控件訪問用戶控件的公共屬性。 但是,我無法訪問另一個用戶控件。 即使使用了命名空間“ ASP”,我也只能看到對當前用戶控件的引用。
但是,在頁面中,我可以使用ASP名稱空間引用所有用戶控件。
我是否想念某些東西?
更新:這里是確切的情況-
我有兩個用戶控件A和B。現在它們都在Page Default.aspx上使用。 控件A有一個公共屬性,其中包含在A中單擊的控件的名稱。我希望訪問控件B中的此屬性以做出一些決定。 有了gioven的建議,我知道可以通過容器頁面的FindControl方法到達控件,但是當我無法獲取B中控件A的引用時,如何將其強制轉換為控件A以獲取屬性值?
謝謝你的幫助!
一個用戶控件不應該知道另一個用戶控件(當然,除了包含的任何子控件之外)。 如果ControlABC引用了ControlXYZ,那么您將永遠無法在任何頁面上使用ControlABC,除非該頁面上也有ControlXYZ的實例-這將嚴重損害您重用ControlABC的能力。
解決此問題的一種方法是使用事件“連接”兩個控件之間的連接。 這樣,ControlABC對ControlXYZ的依賴性就不強-即使在沒有ControlXYZ的頁面上也可以輕松重用。 該頁面可以管理兩個控件之間的連接,將ControlXYZ上的委托添加到ControlABC上的事件,以便兩個控件可以通信。
與事件/代理相比,可能還有其他一些技術可以使您的控件彼此交互而不引入強依賴關系,而依賴關系可能有利有弊。 我敢肯定,其他SO成員也會指出。
那正是它需要的方式。
在我看來,將一個用戶控件與另一個這樣的用戶控件耦合似乎不是一個好主意。 無法保證兩者都將出現在頁面上。
如果沒有其他解決方法,則用戶控件確實有權訪問該頁面。 然后,您可以使用Page.FindControl查找另一個用戶控件,並以這種方式訪問其公共屬性。
“名稱空間”與“范圍”不同:名稱空間只是一種定義類定義的方法。 范圍是您可以在代碼的特定點看到的變量(實例)。
該其他用戶控件在同一頁面上嗎? (如果沒有,那么它將根本無法工作)。 您將需要從當前的usercontrol轉到頁面。 從那里您可以找到其他用戶控件。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.