繁体   English   中英

无法从另一个调用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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM