无法从另一个调用一个ASP.NET用户控件(Unable to call an ASP.NET us

2019-11-04 03:41发布

我想从另一个用户控件访问用户控件的公共财产。 但是,我不能够在另一个访问一个用户控件。 即使使用命名空间“ASP”后,我只能够看到参照当前用户的控制。

然而,在一个页面中我能够参考所有的用户控件与ASP命名空间。

我缺少的东西,或者需要是这样?

更新:这里的确切的情况-
我有两个用户控件A和B.现在他们两个正在上一个页面Default.aspx的使用。 在对照一个公共proprty持有我想访问该属性控制B到做出一些决定A.内单击控件的名称。 随着建议由你gioven,我明白了深远由容器页面的FindControl方法控制,但如何将它转换成控制来获取属性值的时候我不能让B中的控制A的参考?

感谢您的帮助家伙!

Answer 1:

一个用户的控制不应该知道的另一个用户控件(与任何包含的子控件的例外,当然)。 如果ControlABC引用ControlXYZ,那么你永远无法在任何网页上使用ControlABC,除非该页面也有ControlXYZ的实例 - 这将显著伤害你重新使用ControlABC能力。

解决方法之一是使用事件“向上线”这两个控件之间的连接。 这样一来,ControlABC不会对ControlXYZ很强的相关性 - 它可以很容易地重新使用,甚至在没有ControlXYZ页。 该页面可以管理两个控件之间的连接,增加对ControlXYZ代表对ControlABC的事件,所以这两个控件可以通信。

有可能的其他技术,让您的控制,以不引入有很强的依赖性,这可能各有利弊彼此交互,相对于事件/代表。 其他组织成员会指出来,我敢肯定。



Answer 2:

这正是它需要的方式。

在我看来,这似乎是一个坏主意,夫妇只生一个用户控件到另一个这样的。 有没有办法来保证两者都将出现在页面上。

如果有周围没有其他办法虽然,用户控件确实有权访问该页面。 然后,您可以使用Page.FindControl找到其他用户控制和访问其公共属性的方式。



Answer 3:

“命名空间”是不一样的“范围”:命名空间仅仅是奥登的类定义的方法。 Scope是你的变量(实例),你可以在你的代码的特定点看到的内容。

其他用户控件在同一页面上? (如果没有,那么它不会在所有的工作)。 您将需要从目前的用户控件到页面中去。 从那里,你可以找到其他用户控件。



文章来源: Unable to call an ASP.NET user control from another