抓住webpart通信的问题

时间:2009-09-29 22:36:57

标签: c# asp.net postback web-parts

我无法理解某些Web部件通信代码,以及如何使其按需运行。我对网络部件比较陌生,所以我觉得我已经太复杂了。

我有

public interface IFormTypeRID
{
    int FormTypeRID { get; }
}

对于此页面,我在左侧有一个ListControl,它是一个Web部件。当您使用此列表控件选择某些内容时,它会回发并将此接口发送到MainForm Web部件。所以我在接收端有这个:

private IFormTypeRID theProvider;

[ConnectionConsumer("FormTypeRID Consumer", "FormTypeRIDConsumer")]
public void InitializeProvider(IFormTypeRID provider)
{
    theProvider = provider;
    FormTypeRID = theProvider.FormTypeRID;
}

现在,我的问题是InitializeProvider在 Page_Load之后发生

这意味着当从MainForm webpart内部发回帖子时,FormTypeRID永远不会被发送。好吧,那很容易将它存储在视图状态或隐藏字段中。

但问题就在于此。

如果在PageLoad之后,我如何处理正在设置的FormTypeRID。目前,我只有一个调用适当函数的setter方法。但这很麻烦,因为setter中的代码必须执行两次。这是因为FormTypeRID必须在Page_Load中设置,因为不知道我们的提供者是否会给我们FormTypeRID(因为我们不知道由于其他webpart,或者因为FormMain而发生了回发)

我知道我解释得那么可怕。但基本上,你怎么判断一个webpart(提供者)或其他人(消费者)是否发生了回发(因此是一个page_load)

1 个答案:

答案 0 :(得分:0)

所有这一切的答案都是非平凡的。

我最终编写了自己的“webpart通信”,实际上最终比ASP.Net更清洁,并且它将在Init和Load等工作。