如果您想在Page_Load之前进行webpart通信怎么办?

时间:2009-10-22 15:52:04

标签: c# asp.net web-parts page-lifecycle webpart-connection

我需要在使用者webpart中的Page_Load上创建一些动态控件。在提供者webpart中,我做了一些黑客攻击并获得了它,所以我可以在Page_Init中加载viewstate之前得到一个控件值。

基本上我想要的是webparts能够在Page_Load之前进行通信。

[ConnectionConsumer("FormRID Consumer","FormRIDConsumer")]
public void InitializeProvider(MyControl.IFormRID provider)
{
    theProvider = provider;
    FormRID = theProvider.FormRID;
}

直到Page_Load之后才会调用该方法。这对我来说是个大问题,因为我的消费者Page_Load依赖于设置和准确的FormRID。我无法将Page_Load代码移动到Page_LoadComplete中,因为我需要使用viewstate创建动态控件(在Page_Load之后未恢复viewstate)

所以我可以使用一些工作,以便我可以在Page_Load之前进行通信。

3 个答案:

答案 0 :(得分:1)

您是否尝试过订阅Web部件区域的Init事件并将InitializeProvider()置于其中?我相信它在用户控件和Web表单的OnLoad或OnInit事件之前被触发。

答案 1 :(得分:1)

你应该使用OnPreRender事件而不是Load,因为onLoad发生在WebPart连接执行之前。

以下是使用OnLoad和OnPreRender事件{\ _}}

所期望的一个示例

答案 2 :(得分:0)

我最终必须创建自己的webpart通信。

它最终比ASP.Net更清洁,并且可以在Web部件内部的OnInit中进行通信。