【文档说明】第4章ASPNET的网页代码模型及生命周期课件.ppt,共(28)页,296.257 KB,由小橙橙上传
转载请保留链接:https://www.ichengzhen.cn/view-45196.html
以下为本文档部分文字说明:
第4章ASPNET的网页代码模型及生命周期2内容第1章认识ASP.NET第2章C#3.0程序设计基础第3章面向对象设计基础第4章ASP.NET的网页代码模型及生命周期3第4章ASP.NET的网页代码模型及生命周期主讲:Jayce_Zou4本章内容主讲:Jayce_Zou
ASP.NET的网页代码模型ASP.NET客户端状态ASP.NET页面生命周期ASP.NET生命周期中的事件5创建ASP.NET网站主讲:Jayce_Zou6ASP.NET网页组成主讲:Jayce_ZouASP.NET网页一般由三部分组成:可视
元素:包括HTML,标记,服务器空间。页面逻辑元素:包括事件处理程序和代码。designer.cs页文件:用来为页面的控件做初始化工作,一般只有ASP.NET应用程序(WebApplication)才有。ASP.NET页面中包含
两种代码模型:单文件页模型代码隐藏页模型7单文件页模型主讲:Jayce_Zou单文件页模型中的所有代码,包括控件代码、事物处理代码以及HTML代码全都包含在.aspx文件中。编程代码在script标签,并使用runat=“server”属性标记。8单文件页模型示例代码主讲:Jay
ce_Zou<%PageLanguage=“C#”%><!DOCTYPEhtmlPUBLIC“-//W3C//DTDXHTML1.0Transitional//EN”“w3.org/TR/xhtml1/DTD/xhtml1-transi
tional.dtd”><scriptrunat=“server”></script><htmlxmlns=“w3.org/2019/xhtml”><headrunat=“server”><title>无标题页</title></head><body><formid=“form1”ru
nat=“server”><div></div></form></body></html>9代码隐藏页模型主讲:Jayce_Zou代码隐藏页模型将事物处理代码都存放在cs文件中,当ASP.NET网页运行的时候
,ASP.NET类生成时会先处理cs文件中的代码,再处理.aspx页面中的代码。这种过程被成为代码分离。代码分离有一种好处:◦.aspx页面,美工人员设计◦.cs文件,程序员完成事务处理◦页面样式代码和
逻辑处理代码分离能够让维护变得简单在.aspx页面中,代码隐藏页模型的.aspx页面代码基本上和单文件页模型的代码相同,不同的是在script标记中的单文件页模型的代码默认被放在了同名的.cs文件中。10代码隐藏页模型代码示例主讲:Jayce_Zou<%Pa
geLanguage=“C#”AutoEventWireup=“true”CodeFile=“Default.aspx.cs”Inherits=“_Default”%><!DOCTYPEhtmlPUBLIC“-//W3C//DTDXHTML1.0Transitional//EN”“w
3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd”><htmlxmlns=“w3.org/2019/xhtml”><headrunat=“server”><title>无标题页</title></head
><body><formid=“form1”runat=“server”><div></div></form></body></html>11后置类代码示例主讲:Jayce_ZouusingSystem.Linq;usingSystem.Web;usingSystem.Web.Sec
urity;usingSystem.Web.UI;usingSystem.Web.UI.HtmlControls;//使用HtmlControlsusingSystem.Web.UI.WebContro
ls;//使用WebControlsusingSystem.Web.UI.WebControls.WebParts;//使用WebParts//继承自System.Web.UI.Pagepublicpartialclass_Default:Syst
em.Web.UI.Page{protectedvoidPage_Load(objectsender,EventArgse){}}12ASP.NETWebApplication主讲:Jayce_ZouASP.NET
网站有一种好处,就是在编译后,编译器将整个网站编译成一个DLL(动态链接库),在更新的时候,只需要更新编译后的DLL(动态链接库)文件即可。但是ASP.NET网站却有一个缺点,编译速度慢,并且类的检查不彻底。相比之下,ASP.NETWebApplicatio
n不仅加快了速度,只生成一个程序集,而且可以拆分成多个项目进行管理。创建了ASP.NET应用程序后,默认创建一个Default.aspx页面,不同的是,多出了一个Default.aspx.designer.cs,用来初始化页面控件,一般不需要修改。13创建ASP.
NETWebApplication主讲:Jayce_Zou14ASP.NET网站和ASP.NET应用程序的区别主讲:Jayce_ZouASP.NET应用程序主要有以下特点:ASP.NET应用程序可以拆分成多个项目方便开发,管理和维护。可以从项目中和源代码管理
中排除一个文件或项目。可以对编译前后的名称,程序集等进行自定义。对App_GlobalResources的Resource强类支持。ASP.NETWebSite编程模型具有以下特点:动态编译该页面,而不用编译整个站点。当一部分页面出现错误不会影响到其他的页面或功能。不需要项目文件,
可以把一个目录当作一个Web应用来处理。总体来说,ASP.NET网站适用于较小的网站开发。而ASP.NET应用程序适应大型的网站开发、维护等。15ASP.NET客户端状态主讲:Jayce_Zou视图状态◦在ASP.NET中,网页包含视图状态来保存用户
的信息,视图状态在页面发回到自身时,跨页过程存储和用户自己的页面的特定值。视图状态的优点:◦不需要任何服务器资源。◦在默认情况下,对控件启用状态的数据进行维护,不会被破坏。◦视图状态的值经过哈希运算和压缩保护,安全性更高。视图状态同样有一些缺点:
◦视图状态会影响性能,如果页面存储较大较多的值,则性能会有较大的影响。◦在手机,移动终端上,可能无法保存视图状态中使用的值。◦视图状态虽然安全性较高,但是还是有风险,如果直接查看页面代码,可以看到相应代
码。16控件状态主讲:Jayce_Zou在页面控件中,如果有多个自定义控件使用多个不同的控件来显示不同的数据结构,为了让这些页面控件能够在在页面上协调的工作,则需要使用控件状态来保护控件,控件状态是不能被关闭的。控件状态也有它的优点:◦与视图状态相同的是,不需要
任何服务器资源。◦控件状态是不能被关闭的,提供了控件管理的更加可靠的方法。◦控件状态具有通用性。17隐藏域主讲:Jayce_Zou在ASP.NET中,隐藏域用来来保存页面的信息,作为维护页面状态的一种形式,但是隐藏域的安全性并不高,最
好不要在隐藏域保存过多的信息。隐藏域具有以下优点。◦不需要任何服务器资源。◦支持广泛,任何客户端都支持隐藏域。◦实现简单,隐藏域属于HTML控件,无需像服务器控件那样有需要编程知识。18隐藏域主讲:Jayce_Zou而隐藏域具有一些不足:◦具有较高的安全隐患。◦存储结构简单。◦如果存储
了较多的较大的值,则会导致性能问题。◦如果隐藏域过多,则在某些客户端中被禁止。◦隐藏域将数据存储在服务器上,而不存储在客户端。注意:如果开发中,页面的隐藏域过多,这些隐藏域被存储在服务器。当客户端浏览页面的时候,会有防火墙扫描页面
,以保证操作系统的安全,如果页面的隐藏域过多,那么这些防火墙可能会禁止页面的某些功能。19Cookie主讲:Jayce_ZouCookie在客户端用户保存网站的少量的用户信息,服务器可以通过编程的方法获取用户信息,Cookie信息和页面请求通常一起发送到服务器,服务器对客户端
传递过来的Cookie信息做处理。通常Cookie保存用户的登录状态、用户名等基本信息等等,在后面的章节会详细介绍使用ASP.NET操作Cookies。20ASP.NET页面生命周期主讲:Jayce_
ZouASP.NET生命周期通常情况下需要经历几个阶段页请求:页请求发生在页生命周期开始之前。当用户请求一个页面,ASP.NET将确定是否需要分析或者编译该页面,或者是否可以在不运行页的情况下直接请求缓存响应客户端。开始:发生了请求
后,页面就进入了开始阶段。在该阶段,页面将确定请求是发回请求还是新的客户端请求,并设置IsPostBack属性。初始化:在页面开始后,进入了初始化阶段。初始化期间,页面可以使用服务器控件,并为每个服务器控件进行初始化。加载:页面加载
控件。验证:调用所有的验证程序控件的Vailidate方法,来设置各个验证程序控件和页的属性。回发事件:如果是回发请求,则调用所有事件处理的程序。呈现:在呈现期间,视图状态被保存并呈现到页。卸载:完全呈现页面后,将
页面发送到客户端并准备丢弃时,将调用卸载。21页面加载事件主讲:Jayce_ZouPage_PreInit当页面被发送到服务器时,页面会重新被加载,启动Page_PreInit事件,执行Page_PreInit事件代码
块。当需要对页面中的控件进行初始化时,则需要使用此类事件。Page_InitPage_Init事件与Page_PreInit事件基本相同,区别在于Page_Init并不能保证完全加载各个控件。22Page_Load
主讲:Jayce_ZouPage_Load事件是在网页加载的时候一定会被执行的事件。Page_Load事件中,一般都需要使IsPostBack来判断用户是否进行了操作,因为IsPostBack指示该页是否
正为响应客户端回发而加载,或者它是否正被首次加载和访问。示例代码如下所示:protectedvoidPage_Load(objectsender,EventArgse)//Page_Load事件{if
(!IsPostBack){Label1.Text=“OK”;//第一次执行的代码块}else{Label1.Text=“IsPostBack”;//如果用户提交表单等}}23ASP.NET事件顺序主讲
:Jayce_Zou大多数初学者会认为Page_Load事件是当页面第一次访问触发的事件,其实不然,在ASP.NET页生命周期内,Page_Load远远不是第一次触发的事件,通常情况下,ASP.NET事件顺序如下所示:◦Page_Init()。◦LoadViewState。◦Load
Postbackdata。◦Page_Load()。◦Handlecontrolevents。◦Page_PreRender()。◦Page_Render()。◦Unloadevent。◦Disposemethodcalled。24页面卸载事件主讲:Jayce_
ZouPage_Unload在页面被执行完毕后,可以通过Page_Unload事件用来执行页面卸载时的清除工作,当页面被卸载时,执行此事件。以下情况会触发Page_Unload事件:◦页面被关闭。◦数据库连接被关闭。◦对象
被关闭。◦完成日志记录或者其他的程序请求。25页面指令主讲:Jayce_Zou页面指令用来通知编译器在编译页面时的特殊处理。例如:缓存、使用命名空间等。当需要执行页面指令时,通常的做法是将页面指令包括在文件的头部。示例代码如下所示:<%PageLanguage=“C#”AutoE
ventWireup=“true”CodeBehind=“Default.aspx.cs”Inherits=“MyWeb._Default”%><!DOCTYPEhtmlPUBLIC“-//W3C//DTDXHTML1.0Transitional//EN”“w3.or
g/TR/xhtml1/DTD/xhtml1-transitional.dtd”>26常用的页面指令主讲:Jayce_ZouPage:定义ASP.NET页分析器和编译器使用的页特定属性Control:定义ASP.NET页
分析器和编译器使用的用户控件特定的属性。Import:将命名空间显示导入到页中。Implements:提示当前页或用户控件实现制定的.NETFramework接口。Reference:以声明的方式指示,应该根据在其中声明此指令的页对另一个用户控件或页源文件进行动态编译和
链接。OutputCache:以声明的方式空间ASP.NET页或页中包含的用户控件的输出缓存策略。Register:将别名与命名空间以及类名关联起来,以便在自定义服务器控件语法中使用简明的表示法27小结主讲:Jayce_Zou本章介绍了ASP.NET
页面生命周期,以及ASP.NET页面的几种模型。ASP.NET页面生命周期是ASP.NET中非常重要的概念,熟练掌握ASP.NET生命周期能对ASP.NET开发,自定义控件开发起到促进作用。本章还介绍了:代码隐藏页模型的解释过程。代
码隐藏页模型的事件驱动处理。ASP.NET网页的客户端状态。ASP.NET页面生命周期。ASP.NET生命周期中的事件。