从动态生成的用户控件中调用父页面中的方法

时间:2013-02-26 22:20:42

标签: c# asp.net

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

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

此应用程序需要对其逻辑进行重大改进,但它超出了我当前项目的范围。 我目前已经实施了较不受欢迎的((MyPageName)this.Page).CustomMethod();,但如果可以的话,我希望以“正确”的方式实施。

你有什么建议吗?

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

1 个答案:

答案 0 :(得分: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;