Javascript在axpx页面中的初始化顺序

ASP.NET的生命周期中介绍了ASP.NET页面是如何处理请求的。在处理过程中包含一系列的事件。他们的顺序以及功能如下,详细参照这篇文章

OnPreInit:在调用 OnPreInit 方法后,将加载个性化信息并初始化页主题(如果有)。 这也是为页动态定义 PageTheme 或 MasterPage 的首选阶段。

OnInit:方法执行创建 Page 实例所需的初始化和设置步骤。 在页生命周期的此阶段中,页中声明的服务器控件都已初始化为默认状态;但每个控件的视图状态尚未填充。 在 Page_Init 阶段中,页中的控件不能访问该页的其他服务器控件,无论其他控件是子控件还是父控件。 不一定会创建其他服务器控件,也不一定能够访问它们。OnInit 方法在 OnPreInit 方法之后但在 OnInitComplete 方法之前调用。页面中的Page_Init是以委托的形式添加到页面初始化时间之中去的。类似于下面的Page_Load

OnPreLoad:方法在从用户返回的所有回发数据都已加载后调用。 在页生命周期的此阶段中,已声明控件和在初始化阶段创建的控件的视图状态信息和回发数据都被加载到页的控件中。在 OnPreLoad 方法中创建的控件也将随视图状态和回发数据一起加载。

Page_Load:这个着重说明一下,这个是在执行完毕OnPreLoad之后执行的,也就是页面加载状态的的时候,这时各项控件都已经准备就绪。若页面AutoEventWireup的值为True,则会将Page_Load委托给System.Web.UI.Page的父类TemplateControl中的OnLoad方法进行处理。而不同于OnInit的是,在System.Web.UI.Page中OnInit是已经被重写的虚方法。而OnLoad是没有在Page类当中被重写的。

javascript在页面中也有一个初始化方法(onload)。在body标签中使用该方法,则会调用onload中的脚本或函数,这个调用过程是在页面完全加载后,也就是服务端事件Page_Load之后。

这里涉及到一个问题,前台页面调用后台方法,能否算是真正的调用后台方法?

在cs文件中有如下代码。

       public int GetEmplpyeeCount()

       {

           MySolution.BLL.EmployeesBLL bll = new MySolution.BLL.EmployeesBLL();

           return bll.GetAllEmployees().Count();

       }

在页面中调用的Javascript函数为。

       function getEmpCount() {

           alert('<%=GetEmployeeCount()%>');

       }

结果返回如下

得到了我们想得到的结果,但这是我们想要的么。在执行完Page_Load方法后,ASP.NET还会执行页面上的C#代码段和表达式(当然是已经编译好的)。当客户端看到页面的时候,实际上代码段也好,后台代码也好,都已经执行完了,我们来看一下下面的源码。

当看到页面的时候实际上,已经执行完GetEmployeeCount方法并且已经打印到页面代码中了。所以这种方法不是严格意义上的调用后台方法,只是在页面加载完毕的时候将合理的数据输出在页面合理的位置上。

而合理调用后台方法还是1、模拟表单提交 2、Ajax