1

我有一个类似于Calling a method in parent page from user control的问题,除了我的用户控件是在页面创建时动态生成的。

我在上面的答案中尝试了首选解决方案,但是由于我事先不知道页面上需要多少个控件副本,所以我无法订阅 Page_Load 上的事件。

这个应用程序需要对其逻辑进行大修,但它超出了我当前项目的范围。我目前已经实现了 less preferred ((MyPageName)this.Page).CustomMethod();,但如果可以的话,我想以“正确”的方式来做。

你有什么建议吗?

编辑:控件的代码位于与页面分开的页面中。(我打算在项目的其他地方重用它。)这意味着控件不知道页面上有哪些处理程序可用。

4

1 回答 1

0

最终,提供的链接中的示例与您的方案之间的唯一区别是控件变量实例范围的上下文。也就是说,在他们的情况下,控件是使用ID其声明中指定的(例如,在标记中)访问的,只有一个始终存在的单一控件。

但是,在您的情况下,您将变出控件的实例,并可以直接、立即访问该实例;这意味着,就像按照示例一样,您可以执行以下操作:

// alread doing this to dynamically generate, no doubt
var control = new MyControl(); 
// then subscribe to the event of this instance...
control.MyEvent += MyEventHandler;
于 2013-02-26T22:43:25.467 回答