ASP.NET页生命周期概述
- 格式:doc
- 大小:52.50 KB
- 文档页数:3
大学考试题及答案一、选择题(每题2分,共20分)1. 中用于定义Web页面中用户界面元素的标记是:A. HTMLB. XMLC. CSSD. JavaScript答案:A2. 在中,用于处理用户输入的服务器控件是:A. TextBoxB. ButtonC. LabelD. Image答案:A3. 下列哪个不是中的数据绑定控件?A. GridViewB. RepeaterC. DropDownListD. TextBox答案:D4. 在中,用于定义Web页面中事件处理程序的属性是:A. OnClickB. OnLoadC. OnSubmitD. All of the above答案:D5. 中,用于在服务器端处理客户端请求的代码块是:A. <% ... %>B. <script ... %>C. <%@ ... %>D. <%-- ... --%>答案:A6. 在中,用于声明服务器控件的标记是:A. <% ... %>B. <%@ ... %>C. <script ... %>D. <%-- ... --%>答案:B7. 下列哪个不是中的数据访问技术?A. B. ODBCC. OLE DBD. LINQ答案:B8. 在中,用于定义Web页面布局的标记是:A. HTMLB. XMLC. CSSD. JavaScript答案:C9. 中,用于在客户端执行的脚本语言是:A. VB. C#C. JavaScriptD. JScript答案:C10. 在中,用于定义Web服务的方法是:A. WebMethodB. WebServiceC. WebHandlerD. All of the above答案:A二、填空题(每题2分,共20分)1. 应用程序的入口点是___________方法。
答案:Application_Start2. 在中,用于定义页面级别的事件处理程序的属性是___________。
VSSVDD概述在软件开发过程中,VSSVDD(View State Server vs View State Desktop)是一个常见的讨论话题。
它涉及了 页面生命周期和页面状态的管理。
本文将介绍VSSVDD的基本概念以及它们的优缺点,帮助开发者更好地理解和选择适应自己需求的状态管理方式。
什么是视图状态(View State)?在中,视图状态是用来跟踪页面上的控件的状态和数据的机制。
它允许在页面的请求和响应之间保留控件的状态,以便在后续请求中恢复页面的状态。
视图状态的主要用途是在页面上维护控件的状态以便保持用户交互的一致性。
例如,当用户在文本框中输入一些内容并点击按钮时,这些输入的值将被保留在视图状态中,以便在后续的请求中可以访问和使用。
VSSVDD的概念VSSVDD涉及两种不同的方式来管理视图状态:View State Server和View State Desktop。
View State ServerView State Server是一种将视图状态存储在服务器上的方法。
当使用View State Server时,视图状态的数据会被存储在服务器的内存中,而不是传输到客户端。
存储在服务器上的视图状态数据有几个优点: - 减少了客户端和服务器之间的数据传输量,提高了性能。
- 对于大型视图状态数据,存储在服务器上可以避免浏览器的传输限制。
- 可以在服务器之间共享视图状态,确保在集群环境下的一致性。
然而,View State Server也有一些缺点: - 需要额外的服务器资源来存储和管理视图状态数据。
- 在服务器上存储视图状态会增加请求的处理时间,因为每次请求都需要读取和写入服务器上的数据。
- 服务器故障可能会导致视图状态丢失,需要进行备份和恢复的操作。
View State DesktopView State Desktop是一种将视图状态存储在客户端上的方法。
当使用View State Desktop时,视图状态的数据会被序列化并在响应中发送到客户端,然后在后续请求中通过解析和反序列化来恢复。
第1章基础1.什么是静态网页?什么是动态网页?静态网页就是用纯HTML代码编写的网页。
这些网页的代码是用一些编辑器输入的,或者是用一些网页设计程序生成的,保存为.html或.htm文件的形式。
设计完成之后,无论是哪个用户访问这个网页,在什么时候访问这个网页,以何种方式进入这个网页,它的显示都不会发生任何变化。
要对用户请求做出动态响应,就要使用动态网页,动态网页可以为不同的用户提供个性化的服务,而为了实现这种动态性,就需要进行程序设计。
2.简述你对的事件驱动机制的理解。
使用一个事件驱动编程模型。
该模型定义了一个事件序列,这些事件在页面的生命周期中被依次引发,顺序为Init →Load →控件事件→Unload对每个引发的事件,你可能需要完成一些任务。
可以在称为事件处理过程中编写代码。
例如,可以在Web页面的Init或Load事件中编写页面初始化代码。
Page_Init是页面的Init 事件的事件处理器,而page_Load是页面的Load事件的事件处理器。
3.简述页面的事件序列,事件触发时机及顺序。
4.IsPostBack的作用是什么?在page_Load的过程中,你可以读取或者重置页面的属性和控件的属性,根据IsPostBack属性判定页面是否为第一次被请求,执行数据绑定等等。
IsPostBack属性为false 表明页面是被第一次显示,为true表明页面被请求后返回(PostBack)的结果值。
5.怎样配置运行环境?(略)第2章C#语言基础1.怎样在程序中加入注释文本?可以使用服务器端注释在页面中包括注释,服务器端注释说明文档,也可防止服务器代码和静态内容执行或呈现。
服务器端注释以<%一开始,以一%>结束。
如下所示:<%-- 这是一个注释--%>在代码中用//做单行注释;用/* */作多行注释2.C#语言中有哪几种控制语句?●条件控制if else switch case●循环控制while do for foreach●跳转语句break continue3.在构造表达式时,怎样明确指定运算次序?见表2-8 运算符从高到低的优先级顺序4.指出下列语句中的语法错误int i;for (i = 1; i <= 10; i++){if ((i % 2) = 0)continue;Response.Write(i);}答:if ((i % 2) = 0)中要用==5.下列语句有哪些语法错误?string[] arr = new string[5]string[5] = 5th string.答:string[] arr = new string[5]string[5] = “hello”.语句缺少分号;字符串要用双引号””6.写一个程序,把字符串“Hello Word”以相反顺序输出<%@ Page Language="C#" %><%String s="Hello World";for (int i = s.Length-1;i>=0;i--){Response.Write(s[i]);}%>7.下面函数有什么错误?bool Write(){Response.Write("Text output from function.");}答:缺少reture语句。
Web Page的生命周期详解了解 Web Page的生命周期对于一个做WEB开发的工程师来说很有必要,尤其是用于编写自己的control的时候。
Web Page的生命周期可以基本分为以下几个阶段:1. Page request本页面被请求时发生在web page生命周期之前, 当有一个页面被请求时,引擎要判断一下这个页面是否需要经过编译或者直接通过此页面的缓冲版本直接发给请求者。
2. Start在这阶段,Page的Request,Response,IsPostBack,UICulture 属性被适当设置。
3. Page initialization在此阶段,每一个control的UniqueID属性被设置,页面的主题也被应用,如果此页面是回传页面,即Page的IsPostBack属性为true,那么页面里各个控件的新的值和ViewState还没有在此阶段被恢复。
4. Load在此阶段,如果页面是回传页面,择页面里各个控件的新的值和ViewState将被恢复或设置。
5. V alidation在此阶段,页面中验证控件调用自己的Validate方法进行验证以便设置自己的IsValid属性,因为验证控件是在客户端和服务器端都要进行验证的。
6. Postback event handling在此阶段所有的委托事件将被调用,我们所有的事件处理代码是在此时被调用的。
7. Rendering在此阶段Page调用每个控件的Render方法将各个控件对应的html文本流写到Response的OutputStream属性中,在此阶段之前,每个控件将再次保存各自的ViewState,因此我们还是有最后一次机会在Page的PreRender方法中改变控件的ViewState属性的。
8. Unload在此阶段,当初为Page及每个控件建立的实体都将被删除,资源被释放。
技术研究作者:鲍学阳来源:《科技创新导报》2011年第12期摘要:是用于形成Web的应用程序的内容丰富的编程框架。
它是一种创建动态Web应用程序的全新编程方法,本文主要阐述技术概述,优点,的模型。
关键词: 概述优点模型中图分类号:TP2 文献标识码:A 文章编号:1674-098X(2011)04(c)-0017-01是用于形成Web的应用程序的内容丰富的编程框架。
它是一种创建动态Web应用程序的全新编程方法,它给开发人员提供了比以往更大的灵活性和更多的功能。
通过把通用代码置于控件中,并将表示逻辑和商务逻辑分离开来的崭新方法,使应用程序的开发和维护更加容易。
1 概述是用于形成于Web的应用程序的内容丰富的编程框架。
它是一种创建动态Web 应用程序的全新手段,它给开发人员提供了比以往更大的灵活性和更多的功能。
通过把通用代码置于控件中,并将表示逻辑和商务逻辑分离开来的崭新方法,使应用程序的开发和维护更加容易。
它是 Framework的组成部分,允许使用Framework支持的任何语言创建代码。
像JSP、PHP和ASP一样,也是一种服务器端技术,它可以制作动态WEB 页的内容。
Visual 不是必要的组成部分,许多开发人员没有它照样可以开发网站。
不过,一旦安装了.NET Framework SDK,用户就可以在任何环境下开发应用程序。
2 的优点是一种用于创建内容丰富的动态网站、WEB应用程序和XML WEB服务的新编程模型。
使用编译的、事件驱动编程模型从而提高运行速度和分离应用程序逻辑和用户界面。
用可以很容易的开发基于三层架构的B/S应用程序。
与以往的编程模型相比,这种新编程模型提供了基于组件的架构和开发范例。
提供了下面一些超越以前WEB 技术的重要特性。
2.1 优良的性能在服务器上运行的是经过编译的CLR代码。
与以前的技术相比,能够充分利用Binding(绑定),及时编译,本地优化,缓冲服务来提高程序的性能。
页⾯事件执⾏过程(完整版) 母版页和内容页中的事件母版页和内容页都可以包含控件的事件处理程序。
对于控件⽽⾔,事件是在本地处理的,即内容页中的控件在内容页中引发事件,母版页中的控件在母版页中引发事件。
控件事件不会从内容页发送到母版页。
同样,也不能在内容页中处理来⾃母版页控件的事件。
在某些情况下,内容页和母版页中会引发相同的事件。
例如,两者都引发和事件。
引发事件的⼀般规则是初始化事件从最⾥⾯的控件向最外⾯的控件引发,所有其他事件则从最外⾯的控件向最⾥⾯的控件引发。
请记住,母版页会合并到内容页中并被视为内容页中的⼀个控件,这⼀点⼗分有⽤。
下⾯是母版页与内容页合并后事件的发⽣顺序:1. 母版页控件 Init 事件。
2. 内容控件 Init 事件。
3. 母版页 Init 事件。
4. 内容页 Init 事件。
5. 内容页 Load 事件。
6. 母版页 Load 事件。
7. 内容控件 Load 事件。
8. 内容页 PreRender 事件。
9. 母版页 PreRender 事件。
10. 母版页控件 PreRender 事件。
11. 内容控件 PreRender 事件。
母版页和内容页中的事件顺序对于页⾯开发⼈员并不重要。
但是,如果您创建的事件处理程序取决于某些事件的可⽤性,那么您将发现,了解母版页和内容页中的事件顺序很有帮助。
Page 执⾏中将按照如下顺序激活事件:Page.PreInitPage.InitPage.InitComplitePage.PreLoadPage.LoadPage.LoadCompletePage.PreRenderPage.PreRenderComplete如果页⾯从另⼀个页⾯继承,如BasePage:System.Web.UI.Page,在BasePage中做了⼀些扩展,如权限检查,⽽其他页⾯从BasePage继承,则BasePage和最终Page的事件激活顺序是:UI.PreInitPage.PreInitUI.InitPage.InitUI.InitComplitePage.InitCompliteUI.PreLoadPage.PreLoadUI.LoadPage.LoadUI.LoadCompletePage.LoadCompleteUI.PreRenderPage.PreRenderUI.PreRenderCompletePage.PreRenderComplete如果使⽤了MasterPage,则MasterPage中的事件和ContentPage中的事件按照下⾯顺序激活:ContentPage.PreInitMaster.InitContentPage.InitContentPage.InitCompliteContentPage.PreLoadContentPage.LoadMaster.LoadContentPage.LoadCompleteContentPage.PreRender更进⼀步,如果ContentPage继承BasePage,那么,各事件的执⾏顺序将变成:UI.PreInitContentPage.PreInitMaster.InitUI.InitContentPage.InitUI.InitCompliteContentPage.InitCompliteUI.PreLoadContentPage.PreLoadUI.LoadContentPage.LoadMaster.LoadUI.LoadCompleteContentPage.LoadCompleteUI.PreRenderContentPage.PreRenderMaster.PreRenderUI.PreRenderCompleteContentPage.PreRenderComplete浏览下来发现并不是我现在所学的 1.1,估计应该是 2.0,不过也没有关系,这让我知道了他们有继承时加载的顺序。
技术简介不仅仅是Active Server Page (ASP) 的下一个版本,而且是一种建立在通用语言上的程序构架,能被用于一台Web服务器来建立强大的Web应用程序。
提供许多比现在的Web开发模式强大的的优势。
1、执行效率的大幅提高是把基于通用语言的程序在服务器上运行。
不像以前的ASP即时解释程序,而是将程序在服务器端首次运行时进行编译,这样的执行效果,当然比一条一条的解释强很多。
2、世界级的工具支持构架是可以用Microsoft(R)公司最新的产品Visual 开发环境进行开发,WYSIWY G(What You See Is What You Get所见即为所得)的编辑。
这些仅是强大化软件支持的一小部分。
3、强大性和适应性因为是基于通用语言的编译运行的程序,所以它的强大性和适应性,可以使它运行在Web应用软件开发者的几乎全部的平台上(笔者到现在为止只知道它只能用在Windows 2000 Server上)。
通用语言的基本库,消息机制,数据接口的处理都能无缝的整合到的Web应用中。
同时也是language-independent语言独立化的,所以,你可以选择一种最适合你的语言来编写你的程序,或者把你的程序用很多种语言来写,现在已经支持的有C#(C++和Java的结合体),VB,Jscript。
将来,这样的多种程序语言协同工作的能力保护您现在的基于COM+开发的程序,能够完整的移植向。
4、简单性和易学性是运行一些很平常的任务如表单的提交客户端的身份验证、分布系统和网站配置变得非常简单。
例如页面构架允许你建立你自己的用户分界面,使其不同于常见的VB-Like界面。
另外,通用语言简化开发使把代码结合成软件简单的就像装配电脑。
5、高效可管理性使用一种字符基础的,分级的配置系统,使你服务器环境和应用程序的设置更加简单。
因为配置信息都保存在简单文本中,新的设置有可能都不需要启动本地的管理员工具就可以实现。
页生命周期概述
页运行时,此页将经历一个生命周期,在生命周期中将执行一系列处理步骤。
这些步骤包括初始化、实例化控件、还原和维护状态、运行事件处理程序代码以及进行呈现。
了解页的生命周期非常重要,这样就能在合适的生命周期阶段编写代码,以达到预期效果。
此外,如果开发自定义控件,则必须熟悉页生命周期,从而正确地初始化控件,使用视图状态数据填充控件属性以及运行所有控件行为逻辑。
(控件的生命周期基于页的生命周期,但是页引发的控件事件比单独的 页中可用的事件多。
)
常规页生命周期阶段
一般来说,页要经历下表概述的各个阶段。
除了页生命周期阶段以外,还有在请求前后出现的应用程序阶段,但是这些阶段并不特定于页。
有关更多信息,请参见 应用程序生命周期概述。
阶段说明
页请求发生在页生命周期开始之前。
用户请求页时, 将确定是否需要分析和编译页(从而开始页的生命周期),或者是否可以在不运行页请求
页的情况下发送页的缓存版本以进行响应。
在开始阶段,将设置页属性,如Request和Response。
在此阶段,页还将确定请求是回发请求还是新请求,并设置IsPostBack属性。
此外,开始
在开始阶段期间,还将设置页的UICulture属性。
页初始化期间,可以使用页中的控件,并将设置每个控件的UniqueID属性。
此外,任何主题都将应用于页。
如果当前请求是回发请求,则回发页初始化
数据尚未加载,并且控件属性值尚未还原为视图状态中的值。
加载加载期间,如果当前请求是回发请求,则将使用从视图状态和控件状态恢复的信息加载控件属性。
验证在验证期间,将调用所有验证程序控件的Validate方法,此方法将设置各个验证程序控件和页的IsValid属性。
回发事件
如果请求是回发请求,则将调用所有事件处理程序。
处理
呈现在呈现期间,视图状态将被保存到页,然后页将调用每个控件,以将其呈现的输出提供给页的Response属性的OutputStream。
卸载完全呈现页、将页发送至客户端并准备丢弃时,将调用卸载。
此时,将卸载页属性(如Response和Request)并执行清理。
生命周期事件
在页生命周期的每个阶段中,页将引发可运行您自己的代码进行处理的事件。
对于控件事件,通过以声明方式使用属性(如onclick)或以使用代码的方式,均可将事件处理程序绑定到事件。
页还支持自动事件连接,即, 将寻找具有特定名称的方法,并在引发特定事件时自动运行这些方法。
如果@ Page指令的AutoEventWireup属性设置为true(或者如果未定义该属性,因为默认情况下为true),页事件将自动绑定至使用Page_event命名约定的方法,如Page_Load和Page_Init。
有关自动事件连接的更多信息,请参见 Web 服务器控件事件模型。
下表列出了最常用的页生命周期事件。
实际的事件比列出的事件要多。
但是,它们不用于大多数页处理方案。
而是主要由 网页上的服务器控件使用,以初始化和呈现它们本身。
如果要编写自己的 服务器控件,则需要详细了解这些阶段。
有关创建自定义控件的信息,请参见开发自定义 服务器控件。
页事件典型使用
Page_PreInit •使用IsPostBack属性确定是否是第一次处理该页。
•创建或重新创建动态控件。
•动态设置主控页。
•动态设置Theme属性。
•读取或设置配置文件属性值。
注意
如果请求是回发请求,则控件的值尚未从视图状态还原。
如果在此阶段设置控件属性,则其值可能会在下一阶段被改•
Page_Init•读取或初始化控件属性。
Page_Load•读取和更新控件属性。
Control events 执行特定于应用程序的处理:
•如果页包含验证程序控件,请在执行任何处理之前检查页和各个验证控件的IsValid 属性。
•处理特定事件,如Button控件的Click事件。
Page_PreRender•对页的内容进行最后更改。
Page_Unload 执行最后的清理工作,可能包括:
•关闭打开的文件和数据库连接。
•完成日志记录或其他特定于请求的任务。
注意
在卸载阶段,页及其控件已被呈现,因此无法对响应流做进一步更改。
如果尝试调用方法(如Response.Wri
法),则该页将引发异常。
•
其他的页生命周期注意事项
请注意有关页生命周期的以下附加信息:
•各个 服务器控件都有自己的生命周期,该生命周期与页生命周期类似。
例如,在相应的页事件期间将调用控件的Init和Load方法。
如果页上包含控件,则将首先调用控件的Init方法,然后再调用页的Init方法。
但是,将在调用控件的Load方法之前先调用页的Load 方法。
•通过处理控件的事件,可以自定义控件的外观或内容。
例如,所有的控件都将引发Init、Load和Unload事件,但是页开发人员通常不处理这些事件。
而是通常处理特定于控件的事件,如Button控件的Click事件和ListBox控件的SelectedIndexChanged事件。
在某些情况下,可能也需处理控件的DataBinding或DataBound事件。
有关更多信息,请参见各个控件的类参考主题以及开发自定义 服务器控件。
•除了处理由页引发的事件以外,还可以重写页的基类中的方法。
例如,可以重写页的InitializeCulture方法,以便动态设置区域性信息。
注意,在使用Page_event语法创建事件处理程序时,将隐式调用基实现,因此无需在方法中调用它。
例如,无论是否创建Page_Load方法,始终都会调用页基类的OnLoad方法。
但是,如果使用override关键字(在Visual Basic 中为Overrides)重写页的OnLoad方法,则必须显式调用基方法。
例如,如果在页中重写OnLoad方法,则必须调用base.Load(在Visual Basic 中为MyBase.Load)以运行基实现。