C# 无法从另一个调用ASP.NET用户控件

C# 无法从另一个调用ASP.NET用户控件,c#,asp.net,user-controls,C#,Asp.net,User Controls,我希望从另一个用户控件访问用户控件的公共属性。 但是,我无法访问另一个用户控件中的一个用户控件。即使使用了名称空间“ASP”,我也只能看到对当前用户控件的引用 但是,在一个页面中,我可以引用所有具有ASP命名空间的用户控件 我是错过了什么,还是应该是这样 更新: 这里是确切的场景- 我有两个用户控件A和B。现在它们都在Default.aspx页面上使用。控件a上有一个公共属性,它保存在a中单击的控件的名称。我希望访问控件B中的此属性以做出一些决定。 根据您的建议gioven,我了解如何通过容器页

我希望从另一个用户控件访问用户控件的公共属性。 但是,我无法访问另一个用户控件中的一个用户控件。即使使用了名称空间“ASP”,我也只能看到对当前用户控件的引用

但是,在一个页面中,我可以引用所有具有ASP命名空间的用户控件

我是错过了什么,还是应该是这样

更新: 这里是确切的场景-
我有两个用户控件A和B。现在它们都在Default.aspx页面上使用。控件a上有一个公共属性,它保存在a中单击的控件的名称。我希望访问控件B中的此属性以做出一些决定。 根据您的建议gioven,我了解如何通过容器页面的FindControl方法访问控件,但是当我无法在B中获取控件A的引用时,如何将其转换为控件A以获取属性值


谢谢你们的帮助

这正是它需要的方式

在我看来,这样将一个用户控件与另一个用户控件耦合似乎是个坏主意。没有办法保证这两个都会出现在页面上

如果没有其他方法,用户控件确实可以访问该页面。然后,您可以使用Page.FindControl查找其他用户控件,并以这种方式访问其公共属性。

“命名空间”与“范围”不同:命名空间只是一种对类定义进行排序的方法。作用域是在代码的特定点上可以看到的变量(实例)

其他用户控件是否在同一页上?(如果没有,那么它将根本不起作用)。
您需要从当前用户控件转到页面。从那里可以找到其他用户控件。

一个用户控件不应该知道另一个用户控件(当然,任何包含的子控件除外)。如果ControlABC引用了ControlXYZ,那么您永远不能在任何页面上使用ControlABC,除非该页面也有ControlXYZ的实例-这将严重损害您重复使用ControlABC的能力

解决此问题的一种方法是使用事件“连接”两个控件之间的连接。这样,ControlABC对ControlXYZ没有很强的依赖性—它可以很容易地重用,即使在没有ControlXYZ的页面上也是如此。该页面可以管理两个控件之间的连接,将ControlXYZ上的委托添加到ControlABC上的事件,以便两个控件可以通信


与事件/委托相比,可能还有其他技术允许控件在不引入强依赖性的情况下相互交互,这可能有其优点和缺点。其他成员肯定会指出的。

我想你遗漏了什么。可能会在页面上发布两个用户控件的相关代码以及如何使用它们^^^希望更新的问题描述能够清楚地说明……如果一个/两个用户控件都实现了一个界面,这并不一定是坏事。但是为了访问公共属性,我需要将其转换到相应的cobtrol,当我没有引用它的时候,我该怎么做呢?嗯,“你永远不能在任何页面上使用ControlABC,除非该页面也有ControlXYZ的实例”。。。在不知道控制措施是什么的情况下,这可能是一个完全合理的要求。