如何在ASP.NET中完成Page_load之后找到下一个语句?

时间:2009-09-28 23:49:23

标签: asp.net visual-studio-2008

当页面回发后,在page_load执行完毕后运行哪个语句?不知道页面中有什么控件。这是在VS 2008调试器中。

编辑: 问题是关于知道哪个事件以及接下来要进行哪种控制。

2 个答案:

答案 0 :(得分:7)

ASP.NET Page Lifecycle

  
      
  • PreInit
  •   
  • 初始化
  •   
  • InitComplete
  •   
  • 预加载
  •   
  • 加载
  •   
  • 控件事件(例如ButtonClick)
  •   
  • LoadComplete
  •   
  • 的PreRender
  •   
  • SaveStateComplete
  •   
  • 渲染
  •   
  • 卸载
  •   

答案 1 :(得分:1)

“下一个声明”是不确定的。换句话说,在“关注点分离”的意义上,这不是你的担忧。这是ASP.NET的关注点,但不是页面上的单个控件,也不是单个开发人员调试页面的。

我建议你确定你真正需要回答的问题,以及你真正需要解决的问题。


以下是“为什么不”的示例:考虑DataBinding事件,该事件是在调用Control.DataBind方法时引发的,通常来自Page_Load内部。考虑一个包含DataGrid控件的页面。调用Control.DataBind后,会为控件引发DataBinding事件,然后在Control.DataBind中的每个控件上调用Control.Controls,最终导致DataBinding成为DataGrid为那些控制而筹集。当它到达Controls时,控件将填充其PreInit集合,输入数据中的每一行都有一行。

每个添加的控件都需要“赶上”。他们将完成InitLoadDataBind等各个阶段 - 一切都达到SelectedIndexChanged

没有办法提前知道将添加哪些控件,因此您无法确定将触发哪些事件以及以何种顺序触发。事实上,一些控制事件将触发或不触发,具体取决于控件的先前状态。如果下拉列表索引从上一次回发更改,则其中一行的模板列中的下拉控件上的{{1}}事件可能会触发,但如果它保持不变则不会触发!