ASPNET-20动态网站开发基础教程课件_第1页
ASPNET-20动态网站开发基础教程课件_第2页
ASPNET-20动态网站开发基础教程课件_第3页
ASPNET-20动态网站开发基础教程课件_第4页
ASPNET-20动态网站开发基础教程课件_第5页
已阅读5页,还剩191页未读 继续免费阅读

下载本文档

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

文档简介

重点内容:.NETFramework2.0简介ASP.NET的基本概念WebForm原理ASP.NET网站的结构创建第一个ASP.NETWeb应用程序第1章ASP.NET2.0基础一、.NETFramework2.0简介.NETFramework是.NET的核心部分,它提供了.NET应用程序所需的核心服务,是开发配置和运行分布式的Web服务和Web应用的基础平台。

.NETFramework是支持生成和运行下一代应用程序和XMLWebServices的内部Windows组件。.NETFramework具有两个主要组件:公共语言运行库和.NETFramework类库。公共语言运行库是.NETFramework的基础。可以将运行库看作一个在执行时管理代码的代理,它提供内存管理、线程管理和远程处理等核心服务,并且还强制实施严格的类型安全以及可提高安全性和可靠性的其他形式的代码准确性。事实上,代码管理的概念是运行库的基本原则。以运行库为目标的代码称为托管代码,而不以运行库为目标的代码称为非托管代码。.NETFramework的另一个主要组件是类库,它是一个综合性的面向对象的可重用类型集合,可以使用它开发多种应用程序,这些应用程序包括传统的命令行或图形用户界面(GUI)应用程序,也包括基于ASP.NET所提供的最新创新的应用程序(如Web窗体和XMLWebservices)。二、ASP.NET的基本概念ASP.NET页框架是一种编程框架,它在Web服务器上运行以动态地生成和管理Web窗体页。ASP.NET页框架创建了传统客户端/服务器Web交互的抽象模型,使开发人员能够使用支持快速应用程序开发和面向对象编程(OOP)的传统方法和工具来进行应用程序编程。ASP.NET页框架为响应在服务器上运行的代码中的客户端事件提供统一的模型,从而使开发人员不必考虑基于Web的应用程序中固有的客户端和服务器隔离的实现细节。该框架还会在页处理生命周期中自动维护页及该页上控件的状态。ASP.NET页框架WebFormWebForm又被称为Web窗体,WebForm提供了窗体设计器、编辑器、控件和调试功能,这些功能结合在一起,能够为浏览器和Web客户端设备快速地生成基于服务器的可编程用户界面。Web开发人员可以访问许多事件和属性,就像在标准的Windows环境中编程一样,因而极大的提高的程序的开发效率。ASP.NET会把WebForm转换为独立于浏览器和平台核心的HTML页面,使得Web窗体页在任何浏览器或客户端设备都可以上运行并显示。二、ASP.NET的基本概念ASP.NET应用程序是指可以从特定位置(该特定位置指Web应用程序服务器上的虚拟目录及其子目录)调用的所有文件、页、处理程序、模块和可执行代码ASP.NET应用程序XMLWeb服务ASP.NET支持XMLWeb服务。Web服务是微软公司.NET计划的基础,一个Web服务就是一个应用Web协议的可编程的应用程序逻辑。利用Web服务,应用程序可以使用HTTP和XML消息等标准在基于Web的应用程序之间交换信息,从而跨越防火墙移动数据。用任何语言编写的、使用任何组件模型和在任何操作系统上运行的程序都能够访问Web服务。Web服务不仅可以为ASP.NET应用程序提供服务,而且还为具有Web访问权限的任何应用程序提供服务。配置和部署ASP.NET的比较简单,配置设置存储在基于XML的文件中,对这些文件进行编辑即可完成配置。VisualStudio.NET为向本地或远程服务器部署应用程序提供了一种简化的机制。只需将文件复制到指定的应用程序目录即可部署这些文件。三、WebForm原理WebForm又被成为Web窗体或者Web表单,主要用来根据特定的信息生成动态的页面。WebForm把VisualBasic表单的高生产性的优点带到了网络应用程序的开发中来,将ASP.NET的代码和页面的一般脚本分割开来,这些分割成块的代码可以向组件一样被重复使用,从而提高了开发的效率。Web窗体页由两部分组成:视觉元素(HTML、服务器控件和静态文本)和该页的编程逻辑。VisualStudio.NET将这两个组成部分分别存储在一个单独的文件中。可视元素在一个.aspx文件中创建,而代码位于一个单独的类文件中,该文件称作代码隐藏类文件.aspx.vb(VB.NET)或.aspx.cs(C#)。WebForm的后缀为aspx,当一个浏览器请求一个aspx文件时,WebForm也没被CLR编辑器编译。当用户再次访问该页面时,由于aspx页面已经被编译过了,所以CLR会直接执行编译过的代码。一般来讲,Web窗体页的生命周期类似于在服务器上运行的任何Web进程的生命周期。ASP.NET页框架通过不同的阶段对Web窗体页进行处理。在Web窗体处理的每一阶段,都可能会引发事件,并且将运行与该事件相对应的任何事件处理程序。四、ASP.NET网站的结构.NETFramework2.0代码创作环境(MicrosoftVisualStudio和其他集成开发环境(IDE))一个Web服务器(如Internet信息服务(IIS))若要开发ASP.NETWeb应用程序(也称为网站),必须具有以下工具:1、ASP.NET网站的布局四、ASP.NET网站的结构可以将网站的文件保存在方便应用程序访问的任何文件夹结构中。为了更易于使用应用程序,ASP.NET保留了某些可用于特定类型的内容的文件和文件夹名称。2、网站文件的类型四、ASP.NET网站的结构网站应用程序中可以包含很多文件类型,某些文件类型由ASP.NET支持和管理,而其他文件类型则由IIS服务器支持和管理。大多数ASP.NET文件类型都可以使用VisualWebDeveloper中的“添加新项”菜单项自动生成。2、网站文件的类型四、ASP.NET网站的结构3、网站文件的类型四、ASP.NET网站的结构由ASP.NET管理的文件类型通常映射到IIS中的asp.dll,由IIS管理的文件类型如表所示。3、ASP.NET网站路径四、ASP.NET网站的结构使用网站中的资源时,通常必须指定资源的路径。例如,可以使用URL路径引用页面中的图像文件或网站中其他位置处的页面的URL。同样,Web应用程序中的代码可以使用基于服务器的文件的物理文件路径对文件进行读写操作。ASP.NET提供用于引用资源并确定应用程序中的页面或其他资源的路径的方法。指定资源的路径绝对URL路径(<imgsrc="/MyApplication/Images/Image.jpg"/>)站点根目录相对路径(<imgsrc="/Images/Image.jpg"/>)根据当前页面路径解析的相对路径(<imgsrc="Images/Image.jpg"/>)解析为当前页面路径对等的相对路径(<imgsrc="../Images/SampleImage.jpg"/>)3、ASP.NET网站路径四、ASP.NET网站的结构确定当前网站的物理文件路径在应用程序中,可能需要确定服务器上的文件或其他资源的路径。例如,如果应用程序以编程方式对文本文件进行读写操作,则必须为用于读取和写入的方法提供该文件的完整物理路径。将物理文件路径(如C:\Website\MyApplication)硬编码到应用程序中并不是很好的做法,因为如果移动或部署应用程序,则路径会发生更改。但是,ASP.NET提供了以编程方式获取应用程序中的任何物理文件路径的方法。然后,可以使用基文件路径创建所需资源的完整路径。用于确定文件路径的两种最常用的ASP.NET功能是返回路径信息的HttpRequest对象的属性,以及MapPath方法。4、ASP.NET网站中共享代码文件夹四、ASP.NET网站的结构如果Web应用程序包括要在多个页之间共享的代码,可以将代码保存在Web应用程序根目录下的两个特殊文件夹(Bin文件夹和App_Code文件夹)中的某个文件夹中。在Bin文件夹中可以存储编译的程序集,Web应用程序任意处的其他代码(如页代码)都会自动引用该文件夹。Bin文件夹中的程序集无需注册。只要.dll文件存在于Bin文件夹中,ASP.NET就可以识别它。可以在App_Code文件夹中存储源代码,在运行时将会自动对这些代码进行编译。Web应用程序中的其他任何代码都可以访问产生的程序集。因此,App_Code文件夹的工作方式与Bin文件夹很类似,不同之处是可以在其中存储源代码而非已编译的代码。App_Code文件夹及其在ASP.NETWeb应用程序中的特殊地位使得可以创建自定义类和其他仅源代码文件,并在Web应用程序中使用它们而不必单独对它们进行编译。App_Code文件夹可以包含以传统类文件(即带有.vb、.cs等扩展名的文件)的形式编写的源代码文件。但是,它也可以包含并非明确显示出由某一特定编程语言编写的文件。例如.wsdl(Web服务发现语言)文件和XML架构(.xsd)文件。ASP.NET可以将这些文件编译成程序集。1、安装和配置IIS五、ASP.NET2.0开发环境IIS(InternetInformationServer)的主要功能是响应使用者的请求,将所要浏览的网页内容传输给客户端;管理及维护Web站台;管理及维护FTP站台;SMTP虚拟服务器等。目前IIS的最新版本6.0版,是Windows2003的内建组件。打开“控制面板”窗口,在窗口中双击“添加/删除程序”图标,打开“添加/删除程序”对话框,单击对话框左侧的“添加/删除Windows组件”命令,弹出“Windows组件”对话框,选中“Internet信息服务(IIS)”,此时可以单击“详细信息”按钮查看要安装的内容,单击“确定”按钮即开始安装。2、安装VisualStudio2005五、ASP.NET2.0开发环境VisualStudio2005的安装过程,依然继承了VisualStudio.NET2003简洁、实用的特点。VisualStudio2005的安装过程高度自动化,除了进行必要的配置之外,无需多余的操作。在成功安装VisualStudio2005之后,向导将显示结束报告。最后,返回安装首页面,用户可以接着安装产品文档。六、创建第一个ASP.NETWeb应用程序使用VisualStudio2005创建一个ASP.NETWeb应用程序,起始界面如左图所示,单击“测试”按钮,效果如右图所示。重点内容:HTML网页设计基础VBScript语言JavaScript语言第1章HTML和脚本语言一、HTML网页设计基础HTML是超文本标记语言(HyperTextMarkupLanguage)的缩写,可以满足跨平台的需要,使Web页面在各种系统上都能浏览。HTML语言是一种描述文档结构的语言,可以指定Web页的外观和布局;图形放在什么地方,文本的外观如何,单击某个链接跳转到哪些页面等内容。HTML语言使用描述性的标记符(称为标签)来指明文档的不同内容,这些标记用尖括号括起来使用特定的字符表示特定的含义,并且不区分大小写。1、基本标记一、HTML网页设计基础HTML文档中,<hn></hn>标签可以定义不同显示效果的标题,n表示标题的级数,取值范围为1到6,1级标题的字体最大,6级标题的字体最小。2、<hn></hn>标签<html><head><metahttp-equiv="Content-Type"content="text/html;charset=gb2312"><title>使用标题标签演示</title></head><body><H1align="center">欢迎使用ASP.NET2.0!</H1><H2align="center">欢迎使用ASP.NET2.0!</H2><H3align="center">欢迎使用ASP.NET2.0!</H3><H4align="center">欢迎使用ASP.NET2.0!</H4><H5align="center">欢迎使用ASP.NET2.0!</H5><H6align="center">欢迎使用ASP.NET2.0!</H6></body></html>一、HTML网页设计基础段落标签的格式为<p></p>,用来创建一个新的段落。<p>表示一个段落的开始,结尾标记</p>可以省略,但是一般情况下,为了防止文档出错,尽量不要省略结尾标记。<p></p>标签最常用的属性就是align属性,用于设置内容的对齐方式3、段落标签<html><head><metahttp-equiv="Content-Type"content="text/html;charset=gb2312"><title>使用段落标签</title></head><body><p>这一段左对齐</p><palign="right">这一段右对齐</p><p><palign="center">这一段居中对齐</p></body></html>一、HTML网页设计基础在网页中经常使用的列表分为顺序列表,无序列表和自定义列表三种。其中,顺序列表是指各列表项之间是有顺序的,从1、2、3…一直延伸下去。4、列表标签<oltype="符号类型"start="4"></> <litype="符号类型"></li> <litype="符号类型"></li> …</ol>其中,<ol></ol>标签用来建立一个顺序序列表,属性start用于指定开始的数目,不论设定了哪一数目款式,其值只能是1,2,3..等整数,默认值为1;属性type用于指定表示顺序的款式,可以使用如下5个值:一、HTML网页设计基础链接是一个网站的灵魂。超链接是网页页面中最重要的元素之一。一个网站是由多个页面组成的,页面之间依据链接确定相互的导航关系。链接标记虽然在网站设计制作中占有不可替代的地位,但是其标记只有一个,那就是<A>标记。5、超链接<head><metahttp-equiv="Content-Type"content="text/html;charset=gb2312"><title>超链接的使用</title></head><body><ahref="#myname">跳到说明</a><br/><ahref="2-3.html">链接到2-3</a><br/><ahref="2-2.html"title="跳转到2-2"target="_blank">链接到2-2</a><br/><p></p><p></p><p></p><p></p><p></p><p></p><p></p><p></p><p></p><p></p><aname="myname">说明部分</a></body></html>一、HTML网页设计基础表格是一种能够有效的描述信息的组织方式,由行、列和单元格组成,可以很好地控制页面布局。表格的定义通过<table></table>,<tr></tr>和<td></td>标签实现。6、表格<table> <tr> <td>表格的一行的第一个单元格</td> <td>表格的一行的第二个单元格</td> ... </tr> <tr> <td>表格的二行的第一个单元格</td> <td>表格的二行的第二个单元格</td> ... </tr> ... </table>其中,其中<table></table>标签用于定义表格,<tr></tr>标签用于定义表格中的行,<td></td>用于定义表格中某个中的单元格。一、HTML网页设计基础网页中具有可输入表项及项目选择等控制所组成的栏目称为表单,它是与用户交互信息的主要手段,在HTML页面中起着重要作用。表单一般由表单标签和表单域组成,其中表单标签里面包含了处理表单数据所用CGI程序的URL以及数据提交到服务器的方法;表单域是用户输入和交互的主要界面,包括了<input>,<select>,<option>和<textarea>四种类型,其中<input>类型又包含Text,Radio,Checkbox,Password,Submit/Reset,Image,File,Hidden,Button等类型。7、表单一、HTML网页设计基础Web页面中可以使用<img></img>标签为页面添加图像,使得页面更加漂亮。在Web页面上可以显示.gif,.jpg或者.png等格式的图像。<img></img>标签的主要属性如下所示:8、图像一、HTML网页设计基础框架的作用就是把浏览器窗口划分为若干个区域,每个区域可以分别显示不同的网页。使用框架可以非常方便地完成导航工作,而且各个框架之间决不存在干扰问题,所以框架技术一直普遍应用于页面导航。使用框架网页最主要的目的是创建链接的结构。导航条被放置于一个框架之中,可以单击导航条向服务器请求网页,链接的网页出现在另外的框架中,而导航栏所在的网页不发生变化。框架主要包括两个部分,—个是框架集,另一个就是框架。框架集是在一个文档内定义一组框架结构的HTML网页。框架集定义了在一个窗口中显示的框架数、框架的尺寸、载入到框架的网页等。而框架则是指在网页上定义的一个显示区域。每一个框架都有一个显示的页面,这个页面文件称为框架页面。通过标记可以定义框架页面的内容。9、框架二、VBScript语言每种语言都有其数据类型,在VBScript语言中只有一种数据类型,即Variant类型。Variant是一种特殊的数据类型,其子类型基本上包含了所有的基本类型,例如布尔型,整数型等,可使用VarType函数返回数据的Variant子类型。在实际应用中,程序会根据实际的需要选择一个合适的类型进行转换。下面是Variant类型的子类型定义:1、数据类型二、VBScript语言逻辑运算符用于执行逻辑运算,主要包括逻辑与运算符,逻辑或运算符,逻辑非运算符和逻辑异或运算符。2、运算符算术运算符比较运算符逻辑运算符位运算符位运算符主要用于将两个值进行按位运算,主要包括按位与运算,按位或运算,按位取反运算和按位异或运算。按位与运算的符号和逻辑与运算符一样为“And”二、VBScript语言条件语句用于控制程序根据不同的条件执行不同的代码,最简单的条件语句为If...Then...Else语句,当需要对多个条件进行判断时,就需要为If...Then...Else语句添加ElseIf子句以扩充。在VBScritp语言中还提供了SelectCase语句来处理多个分支的情况,SelectCase语句和If...Then...ElseIf...Else语句类型,但是SelectCase语句可以使得程序结构更加清晰。3、控制语句-条件语句If条件表达式Then条件表达式为True时的程序[Else条件表达式为False时的程序]EndIfIf条件表达式1Then条件表达式1为True时的程序ElseIf条件表达式2Then条件表达式2为True时的程序ElseIf条件表达式3Then条件表达式3为True时的程序...Else其他情况时执行的程序EndIfSelectCase条件表达式Case第一个条件第一个条件成立时的代码Case第二个条件第二个条件成立时的代码Case第三个条件第三个条件成立时的代码...CaseElse上述条件都不成立时的代码EndSelect二、VBScript语言循环用于重复执行一组语句。VBScript的循环语句有,While...Wend循环,Do...Loop循环,For...Next循环和ForEach.Next。4、控制语句-循环语句While循环条件[循环语句]WendDo[{While|Until}循环条件][循环语句][ExitDo][循环语句]LoopFor计数器=startToend[Step步长][循环语句][ExitFor][循环语句]NextForEachelementIn数组/集合[循环语句][ExitFor][循环语句]Next[element]二、VBScript语言在程序中使用子过程的好处是,可以使程序变得更清楚明了,如果在程序中有很多重复使用的程序代码,就可以将它写成子过程。5、Sub子过程Sub子过程名称[(参数1,参数2,…)]程序代码EndSub<html><head><metahttp-equiv="Content-Type"content="text/html;charset=gb2312"><title>VBScript-Sub子过程</title></head><body><SCRIPTLANGUAGE="VBScript">subblue_onclickdocument.bgcolor="blue"msgbox"您单击的是蓝色按钮"endsub</SCRIPT><palign=center><inputid=bluename=bluetype=buttonvalue=蓝色></p></body></html>二、VBScript语言Function函数通常用来定义一段经常共用的程序代码,以增加程序的可读性和易维护性。其语法格式如下:6、Function函数Function函数名称[(参数1,参数2,…)]程序代码EndFunction<html><head><metahttp-equiv="Content-Type"content="text/html;charset=gb2312"><title>VBScript-Function函数</title></head><body><SCRIPTLANGUAGE="VBScript">subconfirm_onclickmsgbox"10的平方等于"&getPower(10)endsubFunctiongetPower(x)getPower=x*xEndFunction</SCRIPT><palign=center><inputid=confirmname=confirmtype=buttonvalue=10的平方></p></body></html>二、VBScript语言用户经常遇到在另一个程序中调用子过程或函数的情况。在VBScript中有两种调用子过程和函数的语句。其语法格式如下:7、子过程和函数的调用Call过程名称或函数名称[(参数1,参数2,…)]过程名称或函数名称参数1,参数2,…第一种格式是在子过程或函数的名称前加上关键字Call,但要注意将参数写在括号里。第二种格式只在子过程或函数名称后加上所需要的参数名称即可,多个参数之间要用逗号加以隔开。三、JavaScript语言JavaScript中有六种基本的数据类型:数值(整数和实数)、字符串型、布尔型、对象、未定义和空值。1、数据类型数值类型包括整数,浮点数和NaN字符串也是一个对象。字符串使用双引号或者单引号说明,如果在字符串中要包括双引号,则使用单引号引出双引号布尔型常用于判断,只有两个可选的值:true和false。其中,true表示条件为“真“,false表示条件为false。JavaScript中可以使用对象,常见对象包括Navigator、Window、Location、History、Document。如果一个变量被定义后没有对其进行初始化,则该变量的值为未定义Undefined类型。JavaScript中用null表示空值,如果引用未创建的对象,就会返回一个null值。三、JavaScript语言条件语句用于控制程序根据不同的条件执行不同的代码,最简单的条件语句为if-else语句,其语法定义如下:2、条件语句if(条件表达式)代码1/代码块1else代码2/代码块2在JavaScritp语言中还提供了switch语句来处理多个分支的情况,switch语句可以使得程序结构更加清晰。下面是switch语句的语法定义:switch(条件表达式){case第一个条件:第一个条件成立时的代码[break;]case第二个条件:第二个条件成立时的代码[break;]...[default: 上述条件都不成立时的代码]}三、JavaScript语言循环用于重复执行一组语句。JavaScript的循环语句有while循环和for循环。while当指定的循环条件为true时,执行循环体中的一系列的语句,其语法定义如下:3、循环语句while(循环条件)循环语句for循环用于将循环体中的代码运行指定的次数。在循环中使用计数器变量,该变量的值随每一次循环增加或减少。for循环的语法定义如下:for(初始化;循环条件;增量) 循环语句三、JavaScript语言计算机程序里使用的单独的语句通常被组织成称为过程的逻辑单元。在JavaScript程序设计中,过程被称为函数。函数可以把一组相关的JavaScript语句当作一个独立的单元。函数和所有其他JavaScript代码一样,必须放在<SCRIPT>…</SCRIPT>标签对之内。在JavaScript程序中使用函数之前,首先必须创建或定义该函数。在HTML文档内构成函数的语句行叫做函数定义。定义函数的语法如下:4、函数functionname_of_function(parameters){statements;}重点内容:数据类型运算符控制语句字符串处理类和对象委托与事件C#2.0的新特性第1章C#2.0语言程序设计基础一、数据类型C#中数据类型可以分为值类型和引用类型。值类型又可以称为数值类型,其中包含简单类型(SimpleTypes)、枚举类型(EnumTypes)和结构类型(StructTypes)三种;引用类型包含类类型(ClassTypes)、对象类型(ObjectTypes)、字符串类型(StringTypes)、数组类型(ArrayTypes)、接口类型(InterfaceTypes)和代理类型(DelegateTypes)等。1、值类型一、数据类型C#中的值类型数据,存储在内存的堆栈中时,每个变量或程序都有自己的堆栈,不能共用一个堆栈地址。当数据从一个值类型的变量传递到另一个相同类型的变量时,会在堆栈中分配两个不同的地址。简单类型是数值类型的一种,是组成应用程序的基本组成部件,简单类型又包括:整数类型,浮点类型,布尔类型,字符类型等,枚举(enum)类型是由一组特定的常量构成一种数据结构,系统把相同类型、表达固定含义的一组数据作为一个集合放到一起形成新的数据类型。结构类型通常是一组相关的信息组合成的单一实体。其中的每个信息称为它的一个成员。结构类型可以用来声明构造函数、常数、字段、方法、属性、索引、操作符和嵌套类型。结构类型通常用于表示较为简单或者较少的数据,其实际应用意义在于使用结构类型可以节省使用类的内存的占用,因为结构类型没有如同类对象所需的大量额外的引用。2、引用数据类型一、数据类型C#中的引用类型数据,存储在内存的堆栈中时,不同的变量共同使用同一个位置的数据,当数据从一个引用类型的变量传递到另一个相同类型的变量时,只是把这个变量的引用地址传递给新的变量,同时引用当前堆栈的数据。字符串实际上是Unicode字符的连续集合,通常用于表示文本,而String是表示字符串的System.Char对象的连续集合。在C#中提供了对字符串(string)类型的强大支持,可以对字符串进行各种的操作。string类型对应于.NETFramework中定义的System.String类,System.String类是直接从object派生的,并且是final类,不能从它再派生其他类。数组(Array)是一种数据结构,它包含了通过计算索引访问的变量成员。包含于数组中的变量成为数组元素。所有的数组元素都具有相同的数据类型,而这个类型被称为数组类型。3、语句一、数据类型C#代码由一系列语句组成,每条语句都以分号表示结束,物理上的一行可以容纳多条语句,但为了达到可读性要求,不建议在—行上放置多条语句了。反过来,一条句语句放在多个行上则比较常见。C#是一个块结构的语言,所有的语句都是代码块的一部分。这些块用一对花括号(“{}”)来界定,一个语句块可以包含任意多条语句,或者根本不包含语句。花括号字符本身不加分号且最好独占一行,花括号字符必须成对出现,“}”自动与自身以前的且最临近的“{”进行匹配。1:usingSystem;2:classTest3:{4:publicstaticvoidprint()5:{6:Console.WriteLine(“Functionprint!”);7:}9:publicstaticvoidMain()10:{11:Console.WriteLine("thisismyfirstC#program12:helloworld!");13:}14:}在这段代码中,11和12行虽然物理上是两行,但是由于11行后面没有语句结束标志符“;”,所以11、12行被看作是一条语句。代码块可以互相嵌套(即块中可以包含其他块),而被嵌套的块要缩进得多一些。在上面的实例代码中,10到13行之间的内容可以“看作”是一条语句,嵌套在外层大括号内部,根据匹配原则,第13与第10行匹配,第7行与第5行相匹配,第14行与第3行进行匹配。4、标识符与关键字一、数据类型标识符(identifier)是C#程序员为类型、方法、变量、常量等所定义的名字。关键字(Keyword)是C#程序语言保留作为专用的字,不能作为通常的标识符来使用。标识符(identifier)名以字母、下划线(_)等Unicode字符开头,但是不能以数字开头,不能包含空格,关键字不可以用作普通标识符,但可以用@前缀来避免这种冲突。关键字也称为保留字(reservedword),在C#语言中有如下关键字:5、变量和常量一、数据类型所谓常量,就是在程序的运行过程中其值不能被改变的量。常量的类型也可以是任何一种C#的数据类型。常量的定义格式如下:const常量数据类型常量名(标识符)=常量值;所谓变量,就是在程序的运行过程中其值可以被改变的量,变量的类型可以是任何一种C#的数据类型。所有值类型的变量具有实际存在于内存中的值,也就是说当将一个值赋给变量是执行的是值拷贝操作。变量的定义格式和常量的有些类似,只是没有了const关键字,其定义格式如下:变量数据类型变量名(标识符);或者变量数据类型变量名(标识符)=变量值;6、装箱和拆箱一、数据类型装箱转换是指将一个值类型隐式或显式地转换成一个object类型,或者把这个值类型转换成一个被该值类型应用的接口类型(interface-type)。把一个值类型的值装箱,就是创建一个object实例并将这个值复制给这个object,装箱后的object对象中的数据位于堆中,堆中的地址在栈中。被装箱的类型的值是作为一个拷贝赋给对象的。拆箱转换是指将一个对象类型显式地转换成一个值类型,或是将一个接口类型显式地转换成一个执行该接口的值类型。注意装箱操作可以隐式进行但拆箱操作必须是显式的。拆箱过程分成两步:首先,检查这个对象实例,看它是否为给定的值类型的装箱值。然后,把这个实例的值拷贝给值类型的变量。1、算术运算符二、运算符算术运算符主要用于数学计算中,主要有加法运算符(+),减法运算符(–),乘法运算符(*),除法运算符(/),求模运算符(%),自加运算符(++)和自减运算符(--)。2、赋值运算符二、运算符赋值运算符用于将一个数据赋予一个变量、属性或者引用,数据可以是常量,也可以是表达式。3、关系运算符二、运算符关系运算符表示了对操作数的比较运算,有关系运算符组成的表达式就是关系表达式。关系表达式的结果只可能有两种即“true”或“false”。4、逻辑运算符二、运算符逻辑运算符主要用于逻辑判断,主要包括逻辑与,逻辑或和逻辑非。其中,逻辑与和逻辑或属于二元运算符,“逻辑非”运算符是一元运算符。5、条件运算符二、运算符C#中唯一的一个三元操作符就是条件运算符(?:),由条件运算符组成的表达式就是条件表达式,条件表达式的一般格式为:操作数1?操作数2:操作数3其中,“操作数1”的值必须为逻辑值,否则将出现编译错误。进行条件运算时,首先判断问号前面的“操作数1”的逻辑值是真还是假,如果逻辑值为真,则条件运算表达式的值等于“操作数2”的执行结果值;如果为假,则条件运算表达式的值等于“操作数3”的执行结果值。6、对象创建运算符二、运算符在C#中,new运算符用于创建对象和调用构造函数,new运算符还用于调用值类型的默认构造函数。在C#中为这些运算符定义了不同的优先级,相同优先级的运算符按照从左至右的顺序执行。括号是优先级最高的,可以任意的改变符号的计算顺序。在C#中运算符的优先级定义如表所示,其中1级表示最高优先级,12级表示最低优先级。1、分支语句三、控制语句分支是控制下一步要执行哪些代码的过程,C#中分支语句主要有if语句和switch语句,三元运算符(?:)也有分支的功能。if语句是最常用的分支语句,使用该语句可以有条件地执行其他语句。if语句的最基本使用格式如下:if(测试条件)

测试条件为true时的代码或者代码块switch语句非常类似于if语句,它也是根据测试的值来有条件地执行代码,实际上switch语句完全可以使用if语句代替。一般情况下,如果只有简单的几个分支就需要使用if语句,否则建议使用switch语句,这样可以使代码的执行效率比较高。switch语句的基本语法定义如下:switch(测试值){case比较值1:

当测试值等于比较值1时要执行的代码break;case比较值2:

当测试值等于比较值2时要执行的代码break;...case比较值n:

当测试值等于比较值n时要执行的代码break;default:

当测试值不等于以上各个比较值时要执行的代码break;}2、循环语句三、控制语句当需要反复执行某些相似的语句时,就可以使用循环语句了,这对于大量的重复操作时尤其有意义。C#中的循环语句有四种:do-while循环,while循环,for循环和foreach循环。do-while语句根据其布尔表达式的值有条件的执行它的嵌套语句一次或者多次;while循环非常类似于do循环;for循环是最常用的一种循环语句,这类循环可以执行指定的次数,并维护它自己的计数器。for语句首先计算一系列初始表达式的值,接下来当条件成立时,执行其嵌套语句,之后计算重复表达式的值并根据其值决定下一步的操作;foreach语句列举出一个集合(collection)中的所有元素,并执行关于集合中每个元素的嵌套语句。跳转语句进行无条件跳转,C#为此提供了如下五个语句:break语句,continue语句,goto语句,return语句,throw语句。3、异常处理语句三、控制语句异常是程序执行时遇到的任何错误情况或意外行为。以下这些情况都可以引发异常:代码或调用的代码(如共享库)中有错误,操作系统资源不可用,公共语言运行库遇到意外情况(如无法验证代码),等等。对于这些情况,应用程序可以从其中一些恢复,而对于另一些,则不能恢复。尽管可以从大多数应用程序异常中恢复,但不能从大多数运行库异常中恢复。在.NETFramework中,异常是从Exception类类继承的对象。异常从发生问题的代码区域引发,然后沿堆栈向上传递,直到应用程序处理它或程序终止。公共语言运行库支持基于异常对象和受保护代码块概念的异常处理模型。运行库在异常发生时创建一个表示该异常的对象。也可以通过从适当的基异常派生类来创建自己的异常类。所有使用运行库的语言都以相似的方式处理异常。每种语言都使用Try/Catch/Finally形式的结构化异常处理。将可能引发异常的代码节放在Try块中,而将处理异常的代码放在Catch块中。Catch块是一系以关键字catch开头的语句,语句后跟异常类型和要执行的操作。1、使用String和StringBuilder四、字符串处理字符串是Unicode字符的有序集合,用于表示文本。String对象是System.Char对象的有序集合,用于表示字符串。String对象的值是该有序集合的内容,并且该值是不可变的。String对象称为不可变的(只读),因为一旦创建了该对象,就不能修改该对象的值。看来似乎修改了String对象的方法实际上是返回一个包含修改内容的新String对象。如果需要修改字符串对象的实际内容,请使用System.Text.StringBuilder类。StringBuilder类表示值为可变字符序列的类似字符串的对象。之所以说值是可变的,是因为在通过追加、移除、替换或插入字符而创建它后可以对它进行修改。大多数修改此类的实例的方法都返回对同一实例的引用。由于返回的是对实例的引用,因此可以调用该引用的方法或属性。StringBuilder的容量是实例在任何给定时间可存储的最大字符数,并且大于或等于实例值的字符串表示形式的长度。容量可通过Capacity属性或EnsureCapacity方法来增加或减少,但它不能小于Length属性的值。如果在初始化StringBuilder的实例时没有指定容量或最大容量,则使用特定于实现的默认值(默认为16个字符)。2、格式化字符串四、字符串处理String类的Format方法提供了一种方便的格式化字符串的方式,使用.NETFramework的复合格式设置功能将对象的值转换为其文本表示形式,并将该表示形式嵌入字符串中。参数可以是任何类型,包括经定义的和用户定义的。Format方法处理一个格式规范(format-specification)字符和许多可变的参数,格式规范字符定义字符串模板,并引入每个参数的格式规范。格式规范字符串语法如下:{ParamIndex[,MinWidth][:FormatString]}它指定了一个强制索引、格式化文本的可选长度和对齐方式,以及格式说明符字符的可选字符串,其中格式说明符字符用于控制如何设置相应对象的值的格式。1、定义类五、类和对象C#中提供了很多标准的类,用户在开发过程中可以使用这些类,这样大大节省了程序的开发时间。前面使用了多次的Console就是一个标准的类,封装了多控制台的数据和操作。C#中也可以自己定义类,类的定义方法如下:[类修饰符]class类名[:父类名]{[成员修饰符]类的成员变量或者成员函数;};其中,“类名”是自定义类的名字,该名字要符合标识符的要求。“父类名”表示从哪个类继承。“:父类名”可以省略,如果没有父类名,则默认从Object类继承而来。Object类是每个类的祖先类,C#中所有的类都是从Object类派生出来的。“类修饰符”用于对类进行修饰,说明类的特性。2、定义成员五、类和对象在C#中,按照类的成员是否为函数将其分为两大类,一种不以函数形式体现,称为成员变量,另一种是以函数形式体现,一般包含可执行代码,执行时完成一定的操作,被称为成员函数。类的每个成员都需要设定访问修饰符,不同的修饰符会造成对成员访问能力不一样。如果没有显式指定类成员访问修饰符,默认类型为私有类型修饰符。C#中类成员修饰符的定义和使用方法如表所示:3、对象的创建与回收五、类和对象C#中有两个特殊的函数:构造函数和析构函数。构造函数是当类被实例化时首先执行的函数就是new关键字后面的函数。析构函数是当实例对象从内存中删除前最后执行的函数。在一个对象的声明周期中,都会执行构造函数和析构函数。当创建一个对象时,系统首先给对象分配合适的内存空间,随后系统就自动调用对象的构造函数。因此构造函数是对象执行的入口函数,非常的重要。在定义类时,可以给出构造函数也可以不定义构造函数。如果类中没有构造函数,系统会默认执行System.Object提供的构造函数。如果要定义构造函数,那么构造函数的函数名必须和类名一样。构造函数的类型修饰符总是公有类型public的,如果是私有类型private的,表示这个类不能被实例化,这通常用于只含有静态成员的类中。析构函数是一个实现破坏一个类的实例的行为的成员,和构造函数不同,析构函数在类撤销时运行,常用来处理类用完后的收尾工作。如果在对象在运行过程中动态申请了内存控件,就需要在析构函数中进行回收工作。析构函数不能带有参数,也不能被继承,不能拥有访问修饰符,并且不能显式地被调用(在该对象被撤销时自动被调用)。4、封装、继承和多态五、类和对象1.封装性所谓数据的封装,是指在程序中某一个对象的数据或者信息或者属性,对于其他对象是不可访问的,或者不可被直接利用,除非在编写程序的时候允许其他对象来访问该对象的这些信息。2.继承性继承性是面向对象的一个重要特性,C#中支持类的单继承,即只能从一个类继承。继承是传递的,如果C继承了B,并且B继承了A,那么C继承在B中声明的public和protected成员同时也继承了在A中声明的public和protected成员。3.多态性类的另外一个特性是多态性,所谓多态性是指同一操作作用于不同类的实例,这些类进行不同的解释,从而产生不同的执行结果的现象。在C#中有两种多态性,一种是编译时的多态性,这种多态性是通过函数的重载实现的,另外一种多态性运行时的多态性,这种多态性是通过虚成员方式实现的。运行时的多态性是指系统在编译时不确定选用哪个重载函数,而是直到系统运行时,才根据实际情况决定采用哪个重载函数。下面介绍类的重载实现方法。5、定义接口和抽象类五、类和对象1.接口接口用于为实现它们的类定义功能。一个接口定义了一个协议。一个实现了某个接口的类或结构必须符合它的协议。一个接口可以从多个基本接口继承,而一个类或结构也可以实现多个接口。接口中可以包含方法(methods)、属性(properties)、索引器(indexers)和事件(events)等成员。但是,接口不能被实例化,不能包含成员的具体实现,成员的实现需要在类中实现。接口的定义格式如下所示:[接口修饰符]interface接口的名字[:基类接口名]{//接口内容定义}[;]2.抽象类随着编程工作的深入,经常会发现,当继承结构向上移动时,越靠上层的类就越抽象,甚至有时已经无法为父类实例化任何代码。这个父类只是作为了一个其他子类的基本框架存在,而不提供具体实例化的代码,即抽象类。声明抽象类需要在声明普通类时在类的名称前使用abstract键字。同样声明抽象的成员需要在成员名称前使用abstract关键字。1、委托六、委托与事件委托是一种引用方法的类型。一旦为委托分配了方法,委托将与该方法具有完全相同的行为。委托方法的使用可以像其他任何方法一样,具有参数和返回值。委托实际上相当于C++中指向函数的指针,但是与函数指针不同,委托是面向对象的,类型安全的并且是可靠的。委托是引用类型,它从公共基类:System.Delegate派生出来。一个委托实例封装一个方法及可调用的实体。在声明委托时只需要指定委托指向的原型的类型,它不能有返回值也不能带有输出类型的参数。例如可以声明一个指向无返回值类型函数原型的代理,它没有任何参数并且返回void值:delegatevoidMyDelegate()。在使用时,只需要创建了一个MyDelegate的实例,然后对它进行调用即可。2、事件六、委托与事件事件处理本质上是一个对象通知其他对象发生了某事件的一个过程。在C#中,事件实际上是委托的一种特殊形式。当发生与某个对象相关的事件时,类和结构会使用事件将这一对象通知给用户。这种通知即称为“引发事件”。引发事件的对象称为事件的源或发送者。对象引发事件的原因很多:响应对象数据的更改、长时间运行的进程完成或服务中断。例如,一个对象在使用网络资源时如果丢失网络连接,则会引发一个事件。表示用户界面元素的对象通常会引发事件来响应用户操作,如按钮单击或菜单选择。1、泛型七、C#2.0的新特性C#泛型类似C++的模板,它在一定程度上能够提高应用程序的效率。使用泛型可以定义类型安全的数据结构,而无需使用具体实际的数据类型。通过使用泛型,能够将数据类型参数化,以此完成代码重用的目标。通常情况下,泛型常见于集合应用中。在.NET2.0框架中,系统新提供了一个名称空间System.Collections.Generic,其中包含了一些新的基于泛型的容器类,例如System.Collections.Generic.Stack、System.Collections.Generic.Dictionary、System.Collections.Generic.List和System.Collections.Generic.Queue等,这些类库可以在集合中实现泛型。2、匿名方法七、C#2.0的新特性匿名方法可以在委托中进行编程,以备以后使用,而不是创建全新的方法。在使用匿名方法时,并没有创建另一个方法,而是把需要的代码直接放在委托声明的后面。委托要执行的语句和步骤放在花括号中间,用一个分号结束。3、迭代器迭代器可以指定类或集合在foreach循环中的工作方式。迭代器只能在C#中使用,VisualBasic8.0开发人员目前不能使用类似的特性。可以像C#1.0中那样迭代项的集合,因为这些项实现了GetEnumerator函数。重点内容:Response对象Request对象Server对象Application对象Session对象Cookie对象第4章ASP.NET2.0常用对象一、Response对象

Response对象可以动态地响应客户端的请求,并将动态生成的响应结果返回给客户端浏览器。Response对象可以实现很多功能,例如,向客户端输出数据,跳转网页等。Response对象是HttpResponse类的一个实例。该类主要是封装来自ASP.NET操作的HTTP响应信息。Response对象的Cookies属性为HttpCookie对象,其常用属性如下所示:1、Response对象的属性

一、Response对象

Response对象提供了一系列方法,可以实现输出信息到客户端,包括直接发送信息给浏览器、重定向浏览器到另一个URL或设置cookie的值等等。2、Response对象的方法一、Response对象

单击上方图的“输出”按钮,其运行效果如下方图所示:3、Response对象示例protectedvoidButton1_Click(objectsender,EventArgse){//跳转到Request.aspx页,并传递参数mResponse.Redirect("Request.aspx?m=2");}protectedvoidButton2_Click(objectsender,EventArgse){//用write输出当前时间Response.Write("<br>");Response.Write("当前时间是:"+DateTime.Now.ToString());Response.Write("<br>");for(inti=0;i<100;i++){Response.Write(i.ToString());//当i=10时,停止输出数据if(i==10)Response.End();}}二、Request对象

Request对象是HttpRequest类的一个实例,Request对象主要的功能从客户端接收信息,这些信息包括通过URL参数传递的信息,HTML表单中用post或get方法提交的参数和cookie,以及客户端的IP、浏览器的版本等。1、Request对象的属性二、Request对象Request对象的常用方法如表所列:2、Request对象的方法二、Request对象在文本框中输入“李四”,并单击“提交”按钮,其运行效果如下方的图所示:3、Request对象示例protectedvoidPage_Load(objectsender,EventArgse){lbl_Result.Text=Request.QueryString["m"];}protectedvoidbt_input_Click(objectsender,EventArgse){stringname;name=Request.Form.Get("user");//用get方法得当get提交的数据

lbl_Result.Text=name;}

在Request.aspx.cs中的Page_Load事件中添加如下代码:

添加按钮的单击事件,在Request.aspx.cs中的代码如下所示:三、Server对象Server对象是HttpServerUtility的一个实例。该对象提供对服务器上的方法和属性的访问。1、Server对象的属性和方法三、Server对象

在网站“PageObject”中新建“Server.aspx”页面,在Server.aspx.cs中的Page_Load事件中添加如下代码:2、Server对象示例protectedvoidPage_Load(objectsender,EventArgse){//获取计算机名stringserverName;serverName=Server.MachineName.ToString();Response.Write("你的计算机名称为:");Response.Write(serverName);Response.Write("<br>");//编码和解码Stringstr;str=Server.HtmlEncode("<B>HTML内容</B>");//编码Response.Write("编码后的为");Response.Write(str);Response.Write("<P>");str=Server.HtmlDecode(str);//解码Response.Write("解码后的为");Response.Write(str);}四、Application对象Application对象是HttpApplicationState类的一个实例,定义ASP.NET应用程序中的所有应用程序对象通用的方法、属性和事件。HttpApplicationState类是由用户在global.asax文件中定义的应用程序的基类。此类的实例Application对象是在ASP.NET基础结构中创建的,而不是由用户直接创建的。一个实例在其生存期内被用于处理多个请求,但它一次只能处理一个请求。这样,成员变量才可用于存储针对每个请求的数据。Application的原理是在服务器端建立一个状态变量,来存储所需的信息。要注意的是,首先,这个状态变量是建立在内存中的,其次是这个状态变量是可以被网站的所有页面访问的。1、Application对象的属性四、Application对象

Application对象的方法如表所示:2、Application对象的方法四、Application对象

在网站“PageObject”中添加“Application.aspx”页面,在Application.aspx.cs中为Page_Load事件添加如下代码:3、Application对象的示例protectedvoidPage_Load(objectsender,EventArgse){/***************声明三个Application对象变量并赋值****************/Application["App1"]="Value1";Application["App2"]="Value2";Application["App3"]="Value3";/***************声明三个Application对象变量并赋值***************//********************读取变量及其值*********************/intN;for(N=0;N<Application.Count;N++){Response.Write("变量名:"+Application.GetKey(N));Response.Write("变量值:"+Application.Get(N)+"<br>");}/********************读取变量值*********************//****************修改变量值*********************************/Application.Lock();//由于Application是多用户共享//,防止不同用户同时修改变量值,因此需要先锁定Application对象Application["App1"]="zhang";Application["App2"]="wang";Application["App3"]="li";Application.UnLock();/****************修改变量值*********************************//********************读取变量及其值*********************/Response.Write("修改后的变量值"+"<br>");for(N=0;N<Application.Count;N++){Response.Write("变量名:"+Application.GetKey(N));Response.Write("变量值:"+Application.Get(N)+"<br>");}/********************读取变量值*********************/Application.Clear();//清楚所有变量}五、Session对象在ASP.NET中Session对象是HttpSessionState的一个实例。该类为当前用户会话提供信息,还提供对可用于存储信息的会话范围的缓存的访问,以及控制如何管理会话的方法。在ASP.NET中,Session是一个内置对象的,该对象是Page类的子类。SessionID是传播于网络服务器和客户端之间的唯一的一个信息。当客户端出示它的SessionID,ASP.NET找到相应的Session,从状态服务器里获得相应的序列化数据信息,从而激活该Session,并把它放到一个可以被程序所访问的集合里。整个过程是自动发生的。为系统能够正常工作,客户端必须为每个请求保存相应的SessionID,获取某个请求的SessionID的方式有两种:(1)使用Cookies。在这种情况下,当Session集合被使用时,SessionID被ASP.NET自动转化一个特定的Cookie(被命名为ASP.NET_SessionID)。(2)使用改装的URL。在这种情况下,SessionID被转化一个特定的改装的URL。ASP.NET的这个新特性可以让程序员在客户端禁用Cookies时创建Session。五、Session对象

Session的语法如下:1、Session对象的属性和方法

Session[”变量”]=表达式六、Cookie对象Cookie对象实际是System.Web命名空间中HttpCookie类的对象。Cookie对象为Web应用程序保存用户相关信息提供了一种有效的方法。当用户访问某个的站点时,该站点可以利用Cookie保存用户首选项或其他信息,这样当用户下次再访问该站点时,应用程序就可以检索以前保存的信息。Cookie应用的几条限制:(1)大多数浏览器支持最多可达4096字节的Cookie(2)浏览器还限制了站点可以在用户计算机上保存的Cookie数。大多数浏览器只允许每个站点保存20个Cookie。(3)用户可以设置自己的浏览器,拒绝接受Cookie。六、Cookie对象Cookie其实是一小段文本信息,伴随着用户请求和页面在Web服务器和浏览器之间传递。用户每次访问站点时,Web应用程序都可以读取Cookie包含的信息。当用户第一次访问某个站点时,Web应用程序发送给该用户一个页面和一个包含日期和时间的Cookie。用户的浏览器在获得页面的同时还得到了这个Cookie,并且将它保存在用户硬盘上的某个文件夹中。以后如果该用户再次访问这个站点上的页面,浏览器就会在本地硬盘上查找与该网站相关联的Cookie。如果Cookie存在,浏览器就将它与页面请求一起发送到网站,Web应用程序就能确定该用户上一次访问站点的日期和时间。1、Cookie对象的属性六、Cookie对象

ASP.NET包含两个内部Cookie集合:Request对象的Cookies集合和Response的Cookies集合。其中,Request对象的Cookies集合包含由客户端传输到服务器的Cookie,这些Cookie以Cookie标头的形式传输。Response的Cookies集合包含一些新Cookie,这些Cookie在服务器上创建并以Set-Cookie标头的形式传输到客户端。2、Cookie对象的属性重点内容:内部控件新增控件增强控件验证控件第5章ASP.NET2.0服务器控件一、内部控件Label控件是Web服务器控件中最简单的控件,可以在Web窗体上显示静态文本,也可以用编程的方式操作Label,该控件不支持任何事件,其语法是:1、Label控件<asp:LableID=“ID_Name”Text=“Content”runat=“server”/>Label控件的参数属性如下:Text:该属性用于得到或者设置Lable控件的文本内容。<%@PageLanguage="

温馨提示

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

评论

0/150

提交评论