Asp.net Dropthings和加载用户控件内容

Asp.net Dropthings和加载用户控件内容,asp.net,widget,webforms,portal,personalization,Asp.net,Widget,Webforms,Portal,Personalization,我开始查看dropthings门户,不知道小部件中的内容是如何加载的。我的理解是,头部位于Updatepanel中,小部件的主体位于Updatepanel中,其中包含一个ASP面板。当页面加载时,所有小部件的ASP面板在面板中加载用户控件之前先加载 有人能解释一下这是怎么发生的,并给我指一下安装的代码吗 非常感谢您的帮助我使用的是2.7.5版(1月11日发布),所以这可能会更新一点 每个小部件都是一个用户控件,托管在WidgetContainer.ascx中。WidgetContainer提供所

我开始查看dropthings门户,不知道小部件中的内容是如何加载的。我的理解是,头部位于Updatepanel中,小部件的主体位于Updatepanel中,其中包含一个ASP面板。当页面加载时,所有小部件的ASP面板在面板中加载用户控件之前先加载

有人能解释一下这是怎么发生的,并给我指一下安装的代码吗

非常感谢您的帮助

我使用的是2.7.5版(1月11日发布),所以这可能会更新一点

每个小部件都是一个用户控件,托管在WidgetContainer.ascx中。WidgetContainer提供所有常见功能,如标题重命名、定位、展开/折叠、编辑等。源文件位于根“dropthings”文件夹中。查看Init方法,我们可以看到UserControl实例化并添加到页面的位置:

protected override void OnInit(EventArgs e)
{
    base.OnInit(e);

    var widget = LoadControl(this.WidgetInstance.Widget.Url);  //Here's the magic
    widget.ID = "Widget" + this.WidgetInstance.Id.ToString();

    WidgetBodyPanel.Controls.Add(widget);
    _WidgetRef = widget as IWidget;
    if (_WidgetRef != null) _WidgetRef.Init(this);        
}
因此,首先为每个配置的小部件将WidgetContainer添加到控制树中。然后,在初始化每个容器时,它会创建特定的UserControl,然后将其添加到页面中。什么时候

    WidgetBodyPanel.Controls.Add(widget);
调用时,它将初始化(OnInit)特定小部件。从那里,小部件的内容就在它自己的手中