ASP.NET知己知彼之基础知识(下)

    

    上篇博客大概的讲了ASP.NET的页面访问原理,以及回发页面和控件执行顺序等知识。因为,都只是文字的描述可能理解体会没有那么清晰。所以,这篇博客打算用一个例子来说明一下。

回顾

    上篇博客讲过了,web程序的执行过程需要将客户端的表单提交到服务器执行,然后在生成html页面发送回客户端。这也就照成了,每次提交表单后都会执行一次Pageload事件,同时那些输入控件比如textboxDropDownList等控件的事件默认是不会时时对你的操作起反应的。

粗略的事件执行顺序

    因为这里的事件也不全,每个事件的大概功能呢也不齐全。感兴趣的同学自己再上网查些资料吧。推荐个网址,只有事件顺序没有解释:《ASP.Net事件先后顺序》

   1Perlnit:

         ①使用 IsPostBack 属性确定是否是第一次处理该页。

         ②创建或重新创建动态控件。

         ③ 动态设置主控页。

         ④动态设置 Theme 属性。

         ⑤读取或设置配置文件属性值. 如果请求是回发请求,则控件的值尚未从视图状态还原。如果在此阶段设置控件属性,则其值可能会在下一阶段被改写。

    2)lint:读取或者初始化控件属性

    3)lintComplete

    4)PerLoad

    5)PageLoad

    6)控件Load

    7)控件事件

    8)……

    9Render

    10)PageUnload

实例

    本来呢,是想用把pageload之前的事件来说明的,想想不太容易所以就就算了哈。这里只举例说明一下控件事件的执行顺序。

    HTML页截图:

    

    代码:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;

public partial class Sample_003 : System.Web.UI.Page
{
    int i = 1;
    protected void Page_Load(object sender, EventArgs e)
    {
        //每次页面载入都清空这个文本框
        txt_result.Text = "";

        txt_result.Text =i++.ToString() +  ":PageLoad" + "\n";

    }
    protected void TextBox1_TextChanged(object sender, EventArgs e)
    {
        txt_result.Text +=i++.ToString()+ ":TextChanged" + "\n";

    }
    protected void DropDownList1_SelectedIndexChanged(object sender, EventArgs e)
    {
        txt_result.Text +=i++.ToString() + ":SelectChanged" + "\n";
    }
    protected void Button1_Click(object sender, EventArgs e)
    {
        txt_result.Text +=i++.ToString() + ":ButtonClick" + "\n";
    }
}

   总结

    HTML很简单,就给个截图。代码部分也就那样,自己调试一下吧。自己运行一下呢,就会发现在第一个发生的事件一直是PageLoad事件(因为没有在这个事件之前的代码里写入代码),而最后一个必定是ButtonClick事件。那么中间其他的控件呢,其实和你鼠标点击的顺序无关,而是和控件的前后位置有关。因为整个网页中的内容以表单的形式提交到服务器,服务器是无法知道你触发事件的时间顺序,只能知道你触发了那些事件。所以,网页从加载开始,到提交结束,中间控件事件根据位置顺序执行。

    关于,网页运行原理和事件执行顺序就到这里了……

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。