欢迎您访问我爱IT技术网,今天小编为你分享的编程技术是:【ASP.NET的事件模型(很适合学习的文章)】,下面是详细的讲解!
ASP.NET的事件模型(很适合学习的文章)
在Default.aspx的页面中第一行是一条页面指令:
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Default.aspx.cs" Inherits="AspxEventsModel._Default" %>
其中CodeBehind属性指定代码隐藏页面的名称,Inherits指定所属的命名空间和类,AutoEventWireup属性是可以赋值为true和false,默认是赋值为true。
我们先在Default.aspx页面中放入两个Literal控件:
在Default.aspx.cs页面中,默认会存在Page_Load方法,定义如下:
页面被请求,在页面加载的时候会执行该方法。
那么这个方法为什么会在页面加载的时候执行,这个方法我们并没有给它注册给页面相应的事件。
页面的事件也有很多,我们列出一些重要页面的事件看一下:
在Page类中存在下面的事件,Page类是页面的基类:
在Control类中存在下面的事件,Control类是Page类的基类:
我们对这其中比较关注的事件提取出来,并根据事件的执行顺序来排序:
PreInit:在页面的初始化阶段开始时引发
Init:在页面的初始化时引发
InitComplete:在页面的初始化结束时引发
PreLoad:在页面的加载阶段开始时引发
Load:在页面的加载时引发
LoadComplete:在页面的加载结束时引发
PreRender:在页面即将被呈现时引发
我们看到页面事件有很多,主要来研究Init和Load这两个事件。在Default.aspx.cs页面中,添加Page_Init方法,定义如下:
那么还是回到上面的问题,为什么会在页面请求之后执行Page_Init、Page_Load方法?原因是:
ASP.NET中AutoEventWireup="true",使页面与某些特殊的事件方法绑定,自动识别这些具有特定名称的方法,而不需要进行注册事件。
这些特定名称包括:Page_Init, Page_Load等。这里就说明:Init事件会自动与Page_Init方法绑定,Load事件自动与Page_Load方法绑定。当然这些都是AutoEventWireup="true"的功劳,当我们AutoEventWireup="false"的时候,再次请求页面的时候,Page_Init、Page_Load方法是不会被执行的。那么我们可以显示注册事件:
那么OnInit和OnLoad又是什么来头呢?
它们是Control类中定义的虚方法,所以我们可以在它的子类里面进行重写。
看ASP.NET 的注释是这样描写的:
OnInit:引发 System.Web.UI.Control.Init 的事件。
OnLoad:引发 System.Web.UI.Control.Load 的事件。
很好啊,我们在这边对它们重写,并注册事件合情合理。
我们把对Init注册事件语句放到OnLoad方法中,把对Load注册事件语句放到OnInit方法中,是两个处理的内容交换一下看看会有什么结果:
我们请求页面发现:在OnInit方法中对Load注册事件执行了,在OnLoad方法中对Init注册事件并没有执行。原因是在执行OnInit方法之后,就表示Init事件已经响应完成,在之后再对Init事件注册方法,并不会得到调用。而在OnInit方法中对Load注册事件的时候,Load事件并没有开始触发,这个时候对Load注册事件是有效的。所以现在我们很多时候,都形成了一种规范,只会重写OnInit方法,不重写OnLoad方法,也能完成我们的需求。所以在有些框架里面看不到OnLoad方法就是这样形成的。我们把Default.aspx.cs页面调整成:
很明显我们觉得不需要Page_Init和Page_Load方法,我们再次调整为:
我附上调试的源码Default.aspx:
Default.aspx.cs:
好了,赶快自己动手试试吧。
关于ASP.NET的事件模型(很适合学习的文章)的用户互动如下:
相关问题:动态网站PHP,ASP,ASP.NET三个有什么分别?
答:不用长篇大论,也不用专业述语(说了恐怕楼主也不懂)我就是学了这三种语言,先说ASP吧,我学的时候是有顺序的,ASP PHP .NET 。ASP最适合初学者的程序入门,因为它算不上真正的程序,就像说话一样,很直白,不拐弯抹角,而PHP跟.NET是面向对像... >>详细
相关问题:.net问题
答:1:ADO.NET 是访问数据库技术,比ADO更方便。 2:传值方式, URL、Session、Cookies、Server.Transfer、Application和跨页面传送。 3:两种验证,winform,windows 4: new 覆盖父类方法,实例化类型,泛型约束。 5:结构相当于只有属性,类,可以... >>详细
相关问题:请问谁有asp.net 的文章分页代码?
答:你是用codeSmith 做的嘛? 不知道你想要那种? using System; using System.Data; using System.Configuration; using System.Collections; using System.Web; using System.Web.Security; using System.Web.UI; using System.Web.UI.WebControl... >>详细
- 【asp】asp.net url重写浅谈-net-url重写
- 【DataSet】DataSet、DataTable、DataRow区别详解
- 【asp】asp.net 动态添加多个用户控件-net-动态添
- 【ASP】ASP.NET中内嵌页面代码的一个问题-NET-内
- 【As】Asp.net中的页面乱码的问题-sp--pn-ne-et
- 【增加记录】asp.net中获取新增加记录的ID Access
- 【创建】ASP.NET Web API教程 创建域模型的方法详
- 【Asp】Asp.net 页面调用javascript变量的值-net-
- 【ASP】ASP.NET 5升级后如何删除旧版本的DNX-NET5
- 【404页面】ASP.NET设置404页面返回302HTTP状态码
- 评论列表(网友评论仅供网友表达个人看法,并不表明本站同意其观点或证实其描述)
-
