如何让两个asp.net用户控件相互通信?

时间:2011-05-03 21:49:23

标签: asp.net user-controls

我在.net网页上有两个用户控件,希望能够点击一个控件刷新另一个控件中的数据。

通常情况下这很简单,但复杂的是我没有托管两个控件的页面。将它们分开后,它们将被用作页面上的小部件,并需要如上所述进行交互。

4 个答案:

答案 0 :(得分:1)

托管控件的页面的开发人员是否会将它们集成到页面中并访问后面的代码?如果是这样,当事情发生时让一个小部件引发一个事件,另一个小部件可以订阅该事件并做出响应。这将发生在CodeBehind中,因此它将涉及回发。

如果您不想要回发,则必须使用Javascript。但是没有理由认为自定义UserControl不能像任何常规HTML一样嵌入Javascript。您也可以使用Page.RegisterClientScript或其几种变体从CodeBehind执行此操作。

答案 1 :(得分:0)

如果您可以更改架构以使用Web部件控件而不是用户控件,则可以轻松实现。看一下关于Web Parts Connections的这篇msdn帖子。

答案 2 :(得分:0)

是否可以多次在页面上添加这些控件?单击一个控件会导致回发吗?

我的第一个想法是JavaScript(您可以在控件本身中嵌入必要的JS函数),但如果您可以在页面上有多个控件实例,这将变得更加复杂。

另一种方法是将两个控件组合成一个复合控件。然后你就可以完全控制它们之间的交互,因为那时它只是一个控件。

答案 3 :(得分:0)

你可以这样设置:当你点击第一个控件并回发时,你循环遍历Controls集合来找到你想要刷新的控件,然后用它做你需要的任何事情。但是,如果您想在不回发的情况下执行此操作,则必须使用JavaScript解决方案。