是否有在allPage_Load个事件完成后触发的事件?

我怎么能有超过Page_Load个呢

在我的页面可以呈现之前,我需要我的页面(以及所有嵌入的控件)通过完成Page_Load个事件进行初始化.

当然,问题是如果我在页面的Page_Load处理程序中放入代码:

MyPage.aspx
   --> Page_Load
          ---> DoSomethingWithUserControl()
UserControl1.ascx
   --> Page_Load
          ---> initialize ourselves now that viewstate has been restored

然后在UserControl1控件准备好之前,我开始访问它.

我需要一种方法来运行代码after所有Page_Load个事件都已触发,但所有before个回发事件(例如单击事件)都已触发:

MyPage.aspx
   --> Page_Load
UserControl1.ascx
   --> Page_Load
          ---> initialize ourselves now that viewstate has been restored
MyPage.aspx
   --> Page_AfterLoad
          ---> DoSomethingWithUserControl()

查看MSDN中的页面生命周期,似乎无法引发事件after所有Page_Loads都已完成:

在此处输入图像描述

在所有页面加载完成after次后,有没有办法提高分数?

推荐答案

Page_LoadComplete是加载所有控件后引发的事件

请记住,Init事件首先由所有子控件触发,当所有控件都已初始化时,页面的Init事件将被引发.Load事件反过来工作,页面首先引发Load事件,然后每个子控件引发自己的Load事件.最后,LoadComplete被抬高.Note that this is true only when the controls are created at design time,当动态创建控件时,它们(遗憾的是)没有严格遵循这种方法.

来自MSDN:

如果控件是在运行时动态创建的,或者是在数据绑定控件的模板中以声明方式创建的,则它们的事件最初不会与页面上其他控件的事件同步.例如,对于以声明方式创建的控件,for a control that is added at run time, the Init and Load events might occur much later in the page life cycle个事件比相同的事件多.因此,从实例化它们时起,动态添加的控件和模板中的控件会一个接一个地引发它们的事件,直到它们捕捉到将其添加到控件集合的事件为止.

看看:

(来源:http://msdn.microsoft.com/en-us/library/ms178472.aspx)

在此处输入图像描述

编辑1

为了满足您的所有要求:

我需要一种在所有页面加载事件触发后,但在任何回发事件(例如单击事件)触发前运行代码的方法:

我认为最简单的方法是在用户控件中声明一个自定义事件,并在控件加载后触发它,然后JU在您的ASPX中订阅该事件

用户控制

    public event Action LoadCompleted = delegate { };

    protected void Page_Load(object sender, EventArgs e)
    {
        this.LoadCompleted();
    }

ASPX页面

    protected void Page_Load(object sender, EventArgs e)
    {
        this.myUserControl.LoadCompleted += () => 
        {
            // do somethign interesting
            this.lblMessage.Text = DateTime.Now.ToString();
        };
    }

Asp.net相关问答推荐

'dotnet --version is returning您必须安装或更新.NET才能运行此应用程序.三十九岁;

分层架构中的 ASP.NET 和实体框架 - 仅将实体框架用于 ORM

Web 部署工具 2.1 和 Web 部署 3.5 有什么区别?从 VS 2010 部署需要哪一个?

如何以编程方式设置单元格 colored颜色 epplus?

在 Web.Config 的 Location Path 元素中指定多个目录

如何使用 executeReader() 方法仅检索一个单元格的值

asp.net mvc 中的 RedirectToAction 用法

我应该使用用户名还是用户 ID 来引用 ASP.NET 中经过身份验证的用户

没有回发的按钮?

HTTP 错误 401.3 - 未经授权

ASP.NET 中的 <% %>(嵌入式代码块)

如何在 IIS 7.5 上使用 ASP.NET 表单身份验证保护静态文件?

在 ApiController 中添加自定义响应头

VS2017 无法加载文件或程序集 Microsoft.VisualStudio.QualityTools.UnitTestFramework.dll 或其依赖项之一

SQLServer 与 StateServer 的 ASP.NET 会话状态性能

当.NET抛出WebException((400)错误请求)时如何处理WebResponse?

System.Reflection.Assembly.LoadFile 锁定文件

如何将列表转换为数据表

IIS 是否执行非法字符替换?如果是这样,如何阻止它?

您的下一个 ASP.NET 项目的 Select 是什么:Web 窗体还是 MVC?