我无法理解某些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)
答案 0 :(得分:0)
所有这一切的答案都是非平凡的。
我最终编写了自己的“webpart通信”,实际上最终比ASP.Net更清洁,并且它将在Init和Load等工作。