Web窗体代码语法和技巧.doc_第1页
Web窗体代码语法和技巧.doc_第2页
Web窗体代码语法和技巧.doc_第3页
Web窗体代码语法和技巧.doc_第4页
Web窗体代码语法和技巧.doc_第5页
已阅读5页,还剩4页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

Web窗体代码语法和技巧1 Web窗体代码 web窗体代码有:“混合代码”,“内联代码”,“隐藏代码”。1混合代码 C#代码与HTML代码混合在一起,都放在aspx页面中。例:%for(int i = 0;i 2内联代码c#代码与HTML代码放在同一个文件内,并且代码以的方式嵌入到HTML中。例:public void Page_Load()if (!Page.IsPostBack)this.text1.Text = 你好:;this.text2.Text = ;public void link(object sender,EventArgs e)Response.Write(this.text1.Text + this.text2.Text); 3隐藏代码使用VS.NET环境开发,同时生成一个 .aspx 和 .cs 文件。aspx页面中不再出现c#代码,或出现少量的代码。实现页面和代码分离。2 代码隐藏页1 使用代码隐藏页优点(1)使用VS.NET中实现服务器端代码的默认方法是使用代码隐藏页。(2)它允许代码设计和UI设计分离。(3)发布部署时可以不用把源代码一起部署。(4)提高代码的可读性、独立性和重用性1 代码隐藏页运行机制(1)连接 Web 窗体文件和代码隐藏页文件,使用页面指令 pageLanguage:指定在对页中所有内联呈现( 和 )和代码声明块进行编译时使用的语言。Inherits:定义供页继承的代码隐藏类,区分大小写。CodeFile:指定包含与页关联的类的已编译文件的名称。Src:指定在请求页时动态编译的代码隐藏类的源文件名称。Page1.aspxPage1.aspx.cs public class WebForm1 private void cmd1_Click() (2)实时(JIT)编译(a)需要指定了 src 属性,ASP.NET 将实时编译代码隐藏类。(b)源代码的修改能立即反映到页面上(c)Web 应用程序的运行需要代码隐藏页文件(d)第一次运行时间比较长,后续处理请求比较快。(e)使用JIT编译可以仅仅对小范围代码更新,不需要重新编译整个站点就可以对代码进行更新。(3)预编译(Pre-compile)(a)不需要指定src 属性,ASP.NET 将预编译代码隐藏类。需要使用Inherits。(b)代码隐藏类编译为程序集(.DLL)(c)预编译后,Web 应用程序的运行不依赖于代码隐藏页文件,而需要程序集文件。(d)每次修改源代码后,必须重新编译解决方案才能反映最新的修改。(e)高效率、容易部署,不需要部署代码隐藏页。3 Page类Page类提供了很多页面功能,经常用于服务器端事件过程。当Web窗体被编译时,会解析网页与其代码动态产生一个新类,然后编译此新产生的类。此动态产生的类是派生自的page类。在运行期间,page类会处理到达的请求,动态产生HTML来做出响应,并将它返回浏览器。Asp运行的机制是:把html代码中的可运行代码抽取出来并运行(采用解析方式),然后将运行结果塞回并替换原先服务器端代码所在处,与静态html页面结合后才返回。本质是加了代码的html。A做法完全相反,是用编译方式,网页经过一系列的处理装配成html并返回。例:asp代码与代码1 派生自Page类使用VS.NET开发工具创建页面时,会产生从Page基类继承而来的代码,一般页面继承 System.Web.UI.Page 。.aspx文件会在用户浏览它时被动态编译,它与类文件之间的关联是通过网页顶端的前置处理器指令生成。特别是Inherits,用来指出是哪个类所派生出来的aspx文件。设计时System.Web.UI.PageWebForm1.aspx.csMyProject.dllWebForm1类自Page类派生项目后置代码被编译成一个dllWebForm网页被编译时会动态产生一个派生自Page类的新类,并编译此新产生的类。运行时WebForm1.aspxtemporary.dll当使用者第一次浏览.aspx页面时,会自动产生一个代表改网页的.net类文件,并将它编译成第二个.dll文件。当用户要求网页时,服务器上的.dll文件会自动产生网页的HTML输出,以便在浏览器浏览。2 单个文件Web窗体页只有一个aspx页面,没有后置代码页,此页面也是使用服务器代码来运行。优缺点:(1)代码不会被编译到一个类中,单此页也会派生自page类。(2)安装部署时简便,但必须将原代码一起部署到服务器中。不过页面运行时,代码会将编译过后的页面传递给用户。(3)没有后置代码页,使用“拖拽”方式将控件加入到网页后,必须自行编写cs代码。(4)是在“HTML源”中写代码,而不是在“代码编辑器”中写代码。(5)撰写代码时,不支持Intellisense(智能代码导航),无法使用语法检测,语句完整、定位或代码格式支持。(6)必须以人工方式自行将事件绑定至事件处理程序。不支持双击控件来生成默认的事件处理处理程序。(7)不支持调试功能。(8)网页代码不编译成dll项目组件,要到网页运行时才能够拦截编译时期的错误。4 Web窗体的网页生存周期研究Web窗体页面处理各项细节前,先了解Web窗体网页作为一个Web应用程序来运作时的一些基本特征。Web窗体处理过程会经历许多不同阶段。在每一个阶段,皆会有特定的事件被引发,对应于事件的事件处理程序亦会被调用运行。比如可以在Page_init事件的处理程序中去完成web窗体的一些起始设置操作,在Page_UnLoad事件的处理程序中去完成系统还原与清除操作。341 属性(1)内置属性Intrinsic Cache,User, Trace, Session, Application, Request,Response,Server(2)IsPostBack属性(3)EnableViewState属性(4)IsValid属性342 环回所有与服务器组件交互运作的处理必须在服务器上运行,即,每一项需要处理的动作都必须由窗体传送(提交)给服务器处理,然后再返回浏览器,该过程就是所谓的“环回”(Round Trip)大多数的用户操作都会引发一次环回。Page_LoadPage_UnloadTextbox1_ChangedButton1_ClickPage_DisposedPage_Init控件事件 Change事件Click事件阶段引发事件用途A网页架构初始化Page_init被引发,并且网页与控件视图状态会被回存。A网页架构会回存控件属性并回传数据。用户代码初始化Page_Load事件被引发一般会在此阶段读取与回存先前所存储的下列数据值:(1) 使用Page.IsPostBack属性检查此网页是否是第一次被处理。(2) 如果是第一次被处理,则运行数据绑定。(3) 如果是后续的回环,则回存控件数据值,以便还原至先前客户端请求所存储的阶段。(4) 读取与更新控件的属性。验证调用任何Web服务器控件的Validate方法,以便运行控件所指定的验证操作。事件处理网页被调用以便响应一个窗体事件,则网页中的事件处理程序会在此阶段被调用。一般会在此阶段运行与应用程序相关的特定操作。(1) 处理特定被引发的时间。(2) 如果网页内含有验证类型的服务器控件,则会检查网页或各个验证控件的IsValid属性。(3) 以人工方式存储全局网页变量的状态。清除此时网页已经完成转译并准备好要被移除,引发Page_Unload事件。运行最后状态还原与清理工作(1) 关闭文件(2) 关闭数据库连接(3) 移除对象事件处理器名称发生时间Page_PreInit使用IsPostBack属性确定是否是第一次处理改页,创建或重新创建动态控件,设置Theme属性,读取或设置配置文件属性值。Page_Init读取或初始化控件属性。Page_Load在Page对象上载入服务器控件,由于此时视图状态信息是可以使用的,在这里可以用代码来改变控件的设置或者在页面上显示的文本。Page_PreRender应用程序将要呈现Page对象。可以对内容进行最后的更改。Page_UnLoad页面从内存中卸载。Page_Error发生未处理的异常。Page_DataBinding把控件和数据源绑定在一起。Page_DisposedPage从内存释放,是最后一个步。3 重建网页(视图状态与状态管理)每一次环回都会使得网页重新生成,即会移除原有网页上的所有信息。A会以下列方式运作:(1)网页架构会在环回间存储网页与控件的属性,我们将此动作称为存储控件的视图状态(ViewState)(2)网页架构提供状态管理的方法,以便能够用环回或网页间的传递去存储与应用程序相关的信息,而不仅仅是存储控件的数据值。(3)web窗体能在窗体第一被请求时以及当窗体被提交时加以区别。5 ASP.NET服务器控件事件模型事件过程用于在Web窗体上处理用户交互,是动态交互式Web窗体对用户输入的典型反应。事件过程就是对产生的事件做出响应的行为。有两种类型的事件:客户端事件和服务器端事件:A服务器控件使用Delegate事件的方法,处理程序逻辑。事件本身与处理事件的方法相互隔离。1 事件种类(1)客户端事件(a)不需要往返于客户端和服务器端之间。(b)使用 (2)服务器端事件(a)必须往返于客户端和服务器之间,有多种控件事件。(b)可以使用标记或者使用后置代码页。2 内部事件集多数Web窗体是需要环回于服务器来进行处理。会影响窗体的运行效率。服务器提供了有限的内部事件集,如:onclick。3 事件参数.net Framework模式,所有事件都有两个参数:(1)是引发该事件的对象。(2)内含与事件相关信息的事件对象。4 服务器控件中的回传与非回传事件在web服务器控件中,仅有特定事件会使窗体被提交回服务器,但不会立即引发提交。它们会被控件缓存起来直到下一次发生提交为止。在服务器网页处理期间,所有的事件会优先处理,而不是依照特定的顺序处理。当所有变动事件都处理完毕之后,引发窗体被提交的鼠标按键事件才会被处理。所以不应该生成依赖变动事件依照特定次序被引发的应用程序逻辑。Web服务器控件内含AutoPostBack属性的变动事件,设置为True时,可以立刻提交事件。5 反升事件在DataGrid、DataList与Repeater等Web服务器控件内可以内含本身就能够引发事件的子控件。一些嵌套控件的事件会被反升会被传送至容器,容器会引发一个称为ItemCommand的通用事件,会接收一些参数,以便找出是哪一个原始控件引发原始事件。ItemCommand有两个标准事件参数,第一个是代表事件来源的对象,第二个是内含与事件相关信息的事件对象。6 事件处理程序(1)生成事件处理程序(2)在运行阶段绑定事件处理程序(3)将多个控件绑定至同一个事件处理程序。7 动态方式向向页面添加客户端脚本(1)为控件添加事件:例:Button1.Attributes.Add(onClick, return confirm(是否提交数据?);(2)通过调用ClientScriptManager类方法,可以向页面添加客户端脚本。RegisterClientScriptBlock向页面顶部加一个脚本块。注意:脚本可能在所有元素完成之前呈现到页面中,因此可能无法从脚本中的引用页上的所有元素。RegisterClientScriptInclude与RegisterClientScriptBlock方法类似,但此方法将添加外部js文件。RegisterStartupScript向页面加一个脚本块。在页完成加载后但在触发页的onload事件前执行。一般不创建为时间处理程序或函数;通常只包含要执行的一次的语句。RegisterOnSubmitStatement添加为响应页的onSubmit事件而执行的脚本。该脚本在提交页之前执行,允许用户取消提交。例:string strScript = return confirm(是否提交数据?);ClientScript.RegisterOnSubmitStatement(this.GetType(),ConfirmSubmit, strScript);6 基本代码语法1 代码呈现块语法代码呈现块语法是定义当网页呈现所要执行的“内嵌代码”或“内嵌表达式”,用来定义独立的代码块后流程控制块。语法:例: 和 结果完全相同。); % 将出现错误。注意: 代码呈现块不能声明函数或过程。2 代码声明块语法代码声名块用来定义编译在动态产生Page或UserControl类中的成员变量与方法。语法:代码声明块script:用来说明代码声明块runat=server:说明是服务器端代码。Language:指定程序语言,注意,在pag

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论