模板化用户控制 - 初始化之前的事件触发?

时间:2017-05-09 06:50:55

标签: c# asp.net

我有一个相当复杂的布局,看起来像这样:

  1. Page
  2. 在页面内,模板化用户控件A
  3. 在页面定义的模板中,UserControl B
  4. 在UserControl B中,ASPxUploadControl
  5. UserControl A的模板按如下方式加载:

    protected void Page_Load(object sender, EventArgs e)
    {
    
            if (CommandsTemplate != null)
            {
                SimpleDataItemContainer commandsContainer = new SimpleDataItemContainer(CurrentSurvey);
                CommandsTemplate.InstantiateIn(commandsContainer);
                CommandsPlaceHolder.Controls.Add(commandsContainer);
            }
    
            DataBind();
            LayoutDataBound?.Invoke(this, null);
    }
    

    然后页面会在LayoutDataBound事件中选择在UserControl B上设置属性。这一切都适用于初始加载,我可以在UserControl上看到所需的属性值但是,当ASPxUploadControl通过选择&{39; Upload'来触发回发时一旦commandTemplate重建并在UploadControl_FileUploadComplete之前,事件处理程序DataBind()就会被触发。

    由于该方法需要由LayoutDataBound事件处理程序设置的属性,因此整个进程都在堆中。

    我花了很多时间尝试在生命周期中尽早设置模板化控件,而不需要在页面加载时重新创建这些控件,以确定之前设置的属性值是否可用于ViewState,但我没有取得任何成功。如果我不重新创建每个加载的控件,那么它们就不可见了。

    是否有人能够指出我在这里做错了什么?

0 个答案:

没有答案