版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
可修改欢迎下载精品Word可修改欢迎下载精品Word可修改欢迎下载精品Word第七章大型网站设计——效劳器端动态主页设计通过前面各章的介绍,相信大家已经对网页设计已经有一个完整的认识了。对于建立一个个人或者小型网站来说,利用前面给大家介绍的各种技术和工具就已经能够建立一个图文并茂,动态十足的网站了。但是,对于一个大型或者商业网站来说,这些技术只能够提供Web页面的建立和在静态Web页面的根底上进行的简单动态交互,而大型或者商业网站的设计除了会关注网页所呈现给用户的外观,它们更加关注网站的信息发布、信息收集以及信息处理的能力,而这些能力使用前面所介绍的技术是无法获得的,因此计算机技术人员就开发出了各种效劳器端动态主页设计技术来完成这些功能。通过本章的学习,应掌握以下内容:·ASP.NET的特点及环境搭建·ASP.NET的WebForm的应用·ASP.NET的数据库编程的应用·ASP.NET的会话控制的应用7.1效劳器端动态主页设计概述7.1.1效劳器端动态技术的诞生随着Internet应用的深入,Web技术引入的新的商机也逐渐为人们所注意。但是由于当时的Web技术缺乏对交互和信息动态更新的支持,阻碍的Web技术在商业领域的应用。为了突破这种局限,计算机科学家进行了很多种尝试,提出了很多种对Web技术进行信息交互功能扩展的技术,其中最早投入使用并迅速成为主流技术的是“通用网关接口〔CGI〕〞技术,它的全称是CommonGatewayInterface,它的出现令Web技术拥有了强大的交互能力,并且扩展了WWWServer的功能,例如WWWServer和数据库管理系统〔DBMS〕交互的能力、WWWServer运行效劳器进程的能力等。这些扩展加速了Web技术在商业上的应用,并且促进了各种大型网站的诞生。CGI技术在其诞生之初以其强大的功能成为90%大型网站首选的构建技术,但是通过使用人们发现CGI技术存在两个致命的问题。首先,由于CGI技术提供了WWWServer效劳器和主机程序的交互能力,也使CGI技术存在比较严重的平安问题,恶意黑客可以通过CGI技术的漏洞控制效劳器并造成效劳的瘫痪和数据的损失;其次,CGI技术需要为每一次访问建立一个进程来完成对CGI脚本的处理,如果网站的访问量比较大,那么这种处理方式将严重影响网站的性能。由于这些问题的存在,各大软件厂商都纷纷推出新的技术来替代CGI技术,其中比较有影响力的包括PHP、JSP和ASP等等,其中又以MicroSoft公司推出的ASP技术使用最广泛。2000年秋天,MicroSoft公司推出了ASP技术的升级版——ASP.NET技术,本章将通过对ASP.NET技术的介绍,帮助同学们了解和掌握一种效劳器端编程技术,拥有建立大型网站的能力。1.ASP技术的历史在讲述ASP.NET历史之前,首先来回忆一下ASP。ASP的第一个版本是0.9测试版。它给WEB开发带来一阵暴风,它能够将代码直接嵌入HTML,使得设计WEB页面变得更简单,更强大,并且通过内置的组件能够实现强大功能,最明显的就是ActiveXDataObjects〔ADO〕,它使得建立一个动态页面如小孩子玩游戏一样简单。最终出场的是ActiveServerPage1.0,它做为IIS的附属产品免费发送。并且不久就在Windows平台上广泛使用。ASP与ADO的结合使用开发者很容易地在一个数据库中建立和翻开一个记录集。这不无疑是它如此快就被群众接受的因素,因为你现在能使用这些脚本建立和翻开一个记录集,处理和输出任何数据,以任何顺序,几乎只要你能想到的,它就能完成。1998年,微软公司又发布了ASP2.0。ASP1.0和ASP2.0主要区别是外部的组件需要实例化。有了ASP2.0和IIS4.0,我们就有可能建立ASP应用了,而且每个组件就有了自已单独的内存空间。内置的MicroSoftTransactionServer〔MTS〕也使用制做组件便得简单。微软公司接着开发了Windows2000操作系统。这个Windows版本给我们带上了IIS5.0以及ASP3.0。此次并不是简单对ASP进行补充,核心的不同实际上是把很多的事情交给了COM来做。在windows2000中,微软结合了MTS与COM核心环境做出了COM+,这就让主机有了一种新的方法来使用组件,同样给主机带来了更多的稳定性,成了一个可以升级的效率高的工作平台。IIS5.0在外表上似乎没有改什么,但是在接口上动的手术比较大。在内部,它使用COM+组件效劳来对组件提供一个更好的执行的环境。有了这些,微软公司推出了ASP.NET,ASP.NET又叫ASP.NET,他不是ASP的简单升级,而是MicroSoft推出的新一代ActiveServerPages。ASP.NET是微软开展的新的体系结.NET的一局部,其中全新的技术架构会让每个人的编程生活变得更的简单7.1.2MicroSoft.NET与ASP.NET2000年秋天,IT业巨头——MicroSoft公司发布了其以网络为核心的新的技术框架——MicroSoft.NET技术框架,说明微软将以网络为中心,彻底转换产品研发、发布的方式,改变产品和效劳的范围。在MicroSoft.NET技术框架中,ASP.NET技术是其中的一个最主要的组成局部之一,它是ASP的下一代版本,然而ASP.NET又并非从ASP3.0自然演化而来,在许多方面,ASP.NET与ASP有着本质的不同。ASP.NET完全基于模块与组件,具有更好的可扩展性与可定制性,数据处理方面更是引入了许多冲动人心的新技术,正是这些具有革新意义的新特性,让ASP.NET远远超越了ASP,同时也提供给WEB开发人员更好的灵活性,有效缩短了WEB应用程序的开发周期。ASP.NET与Windows2000Server/AdvancedServer的完美组合,为中小型乃至企业级的web商业模型提供了一个更为稳定,高效,平安的运行环境。要了解ASP.NET的真实面目,首先就得了解一下微软.NET战略。1.Microsoft.NET的历史随着网络经济的到来,微软公司希望帮助用户,能够在任何时候、任何地方、利用任何工具都可以获得网络上的信息,并享受网络通信所带来的快乐。.NET战略就是为着实现这样的目标而设立的。微软公开宣布,今后将着重于网络效劳和网络资源共享的开发工作,并称,将会为公众提供更加丰富、有用的网络资源与效劳。微软新一代平台的正式名称叫做“新一代Windows效劳〞〔NGWS〕,现在微软已经给这个平台注册了正式的商标——MicroSoft.Net。在.Net环境中,微软不仅仅是平台和产品的开发者,并且还将作为架构效劳提供商、应用程序提供商,开展全方位的Internet效劳。在谈及这个平台中使用的新技术,微软透露,它将在.Net环境中提供更多新产品和一揽子的全套效劳。MicroSoft.NET平台的根本思想是:侧重点从连接到互联网的单一网站或设备上,转移到计算机、设备和效劳群组上,使其通力合作,提供更广泛更丰富的解决方案。用户将能够控制信息的传送方式、时间和内容。计算机、设备和效劳将能够相辅相成,从而提供丰富的效劳,而不是像孤岛那样,由用户提供唯一的集成。企业可以提供一种方式,允许用户将它们的产品和效劳无缝地嵌入自己的电子构架中。这种思路将扩展二十世纪八十年代首先由PC赋予的个人权限。MicroSoft.NET将开创互联网的新局面,基于HTML的显示信息将通过可编程的基于XML的信息得到增强。XML是经“万维网联盟〞定义的受到广泛支持的行业标准,Web浏览器标准也是由该组织创立的。微软公司为开发它投入了大量精力,但它并不是MicroSoft的专有技术。XML提供了一种从数据的演示视图别离出实际数据的方式。这是新一代互联网的关键,提供了开启信息的方式,以便对信息进行组织、编程和编辑;可以更有效地将数据分布到不同的数字设备;允许各站点进行合作,提供一组可以相互作用的“Web效劳〞。MicroSoft.NET综述MicroSoft.NET平台包括用于创立和操作新一代效劳的.NET根底结构和工具;可以启用大量客户机的.NETUserExperience;用于建立新一代高度分布式的数以百万计的.NET积木式组件效劳;以及用于启用新一代智能互联网设备的.NET设备软件。MicroSoft.NET产品和效劳—包括Windows.NET,连同建立积木式效劳的核心集成套件;MSNTM.NET;个人订购效劳;Office.NET;VisualStudio.NET;以及用于.NET的bCentralTM。.Net环境中的突破性改进在于:1.使用统一的Internet标准〔如XML〕将不同的系统对接;2.这是Internet上首个大规模的高度分布式应用效劳架构;3.使用了一个名为“联盟〞的管理程序,这个程序能全面管理平台中运行的效劳程序,并且为它们提供强大的平安保护后台;.NET平台包括如下组件:1.用户数据访问技术。其中包括一个新的基于XML的、以浏览器为组件的混合信息架构,叫做“通用画板〞;2.基于WindowsDNA2000的构建和开发工具;3.一系列模块化的效劳,其中包括认证、信息传递、存储、搜索和软件送递功能;4.一系列驱动客户设备的软件;2.什么是ASP.NET?本节将详细介绍称为ActiveServerPages+〔ASP.NET〕的网络应用程序可编程模板。建立在Microsoft.NET框架上网络应用程序共享一个通用应用程序模板。在这个模型中,网络应用程序是一套起源于基URL的URLs。因此它包含用于生成在浏览器中观看的网页的网络应用程序和网络效劳。如同名字所述,ASP.NET是由活动效劳器页面〔ASP〕开展而来。ASP.NET利用commonlanguageruntime和效劳框架网络应用程序提供了一个可靠的、自动化的、可扩展的主机环境。ASP.NET也受益于commonlanguageruntime集成模板,简化了应用程序的配制。另外,它提供简化应用程序开发的效劳〔如状态管理效劳〕以及高水平的编程模板〔如ASP.NETWebForms和ASP.NETWebServices〕。ASP.NET的核心是运行语言,一个高性能的用于处理基于低级结构的请求的运行语言,而基于的结构与MicroSoftInternetInformationServices〔IIS〕所提供的ISAPI结构相似。运行语言是在象效劳器上的IIS或客户机上的IE之类的unmanaged主机过程中运行的受控代码。runtime负责处理引入的所有请求,并对每个请求应用程序的URL进行解析,然后把请求分配到应用程序以进行进一步的处理。运行语言是多线程的,并异步处理请求,因此劣质的应用程序代码阻碍不了它对新请求的处理。而且运行语言假定失败必会发生,因此它被控制为尽最大力量自动地从访问冲突、内存泄漏、死锁等事故中恢复过来。除非是硬件故障,运行语言的目标是100%的可靠性。网络根本上是一个无状态模型,并且在请求间没有联系,这使得编写网络应用程序很困难,因为应用程序通常需要维护跨多个请求的状态。ASP.NET增强了由ASP引入的状态管理效劳,以便为网络应用程序提供三种类型的状态:应用程序、会话、用户。就象在ASP中一样,应用程序状态特定于一个应用程序实例,并且不会持久。会话状态是特定于一个用户与应用程序间的会话的。与ASP会话状态不同,ASP.NET会话状态储存在一个独立的过程中,并且可把它配制成可以储存到一个独立的机器上。这使得会话状态当应用程序在网络群〔Webfarm〕扩展时非常有用。用户状态类似于会话状态,但通常它不会超时,并且是永久性的。因此,用户状态对储存用户参数和其它个性化的信息是有用的。所有状态管理效劳都被实现为模块,因此它们容易增加到应用程序管道中,或从中删除。如果除了由ASP.NET提供的效劳外,还需要额外的状态管理效劳,那么可由第三方的模块提供。ASP.NET同样提供高速缓冲效劳,以改善性能。输出缓冲可完全节省网页翻译,段缓冲储存局部的网页。由于提供了相应的类,所以只要需要,应用程序、模块以及请求处理程序可以在高速缓存中储存任意数量的对象。7.1.3ASP.NET的组成ASP.NET应用程序可编程模板主要是有两个高级可编程模块构成,下面就简单介绍一下这两个高级可编程模块,它们分别是:ASP.NET网络表单〔WebForm〕和ASP.NET网络效劳〔WebService〕。1.ASP.NET网络表单网络表单把基于VisualBasic®的表单的高生产性的优点带到了网络应用程序的开发中来。网络表单支持传统的将HTML内容与角本代码混合的ASP语法,但是它提出了一种将应用程序代码和用户接口内容别离的更加结构化的方法。引入的网络表单控件用于为封装通用用户接口元素提供了一种机制。这些新的特点使得开发工具在支持VB小应用程序的同时,也支持设计时模块,使得WUSIWYG工具支持网页布局。网络表单控件负责生成用户接口,典型情况是在HTML表单中。ASP.NET是提供了一套映射传统的HTML用户接口小部件〔包括列表框,文本框和按钮〕的网络表单控件和一套附加的更加复杂的网络控件〔如日历和广告转板〕。这些控件的一个重要特点是,它们可以被编写以适应客户端的能力;同一网页把大范围的客户端平台和表单因素作为目标。换句话说,网络表单控件能“嗅〞到正在查找表单的客户,然后返回适宜的用户经验――可能是适合低级浏览器的HTML3.2或是适于IE5.0的动态HTML。考虑到网络是一种无状态的联接模型,网络应用程序开发人员所面临的一个很复杂的问题是,他们要对用户与基于网络的接口的交互作用作出反响。网络利用ASP.NET的体系架构提供了一套丰富的效劳,以帮助开发人员建立交互式网页。这些效劳的净作用是使基于组件的、事件驱动的可编程模块,对开发人员来说,非常象客户端的表单程序设计。用户与网页交互作用的状态管理的复杂性被ASP.NET网络表单和网络表单控件隐藏起来了。对开发人员来说,提供的丰富数据绑定效劳使得显示通过数据访问效劳得到的数据变得非常容易。代码与内容的别离使ASP.NET网页能动态地编译到受控类中,用以提高性能。每个引入的请求都被传递到一个新的网页实例,因此开发人员不需要关心代码中的线程平安性。2.ASP.NET网络效劳ASP.NET网络效劳体系架构为用ASP.NET建立网络效劳提供了一高级可编程模板。虽然建立网络效劳并不需要使用网络效劳平台,但是它提供许多的优点将简化开发过程,并且它使用的编程模型对用ASP或VB工作的开发人员来说是很熟悉的。使用这个可编程模型,开发人员不需要理解、SOAP或其它任何网络效劳标准。开发人员用ASP.NET生成一个扩展名为.asmx的文件,并把此文件配制为网络应用程序的一局部,就建立起了一个网络效劳。ASMX文件或者包含对在其它地方定义的受控类的引用,或者包含这个类的定义。这个类是由ASP.NET提供的WebService类所派生。公有的类方法在标记上WebMethod属性后,就会成为网络效劳方法,把请求发送到ASMX文件中的URL后,这些方法就会被调用。你不必手工为你的网络效劳建立一个契约。当被调用者请求时,ASP.NET检查类的元数据,以自动生成SCL文件。客户可通过SOAP,GET和POST提交请求。对方法和参数进行编码的约定是:对GET,将被编码为查询字符串;对POST,将被编码为表单数据。GET和POST的机制不如SOAP有力,但是它们使得客户在访问网络效劳时不必支持SOAP。ASP.NET网络效劳模型假定了一个无状态效劳结构。无状态结构通常比有状态结构更具可扩展性。每次收到一个效劳请求后,就生成一个新对象,请求被转化为一个方法调用,当方法调用返回时对象被销毁。如果这些效劳需要跨请求维护状态,那么它们将使用ASP.NET状态管理效劳。基于ASP.NET的网络效劳在网络应用程序模型中运行,因此它们得到了该模型的所有平安、配制和其它优点。ASP.NET网络效劳还提供了一个为在SCL文件中描述的网络效劳生成分类的受控代理工具。代理生成器把SCL文件中描述的消息映射成受控类中的方法。代理对应用程序代码隐藏了所有的网络和引导设备,因此使用网络效劳看起来就象使用其它受控代码一样。代理将优先使用SOAP链接网络效劳,但是它同样支持GET和POST机制。因此GET和POST同样也能被使用。网络效劳为在Internet上绑定应用程序提供了一个利用现存体系架构和应用程序的简单的、灵活的、基于许多标准的模型。网络应用程序很容易与当地开发的效劳或已存在的效劳集成在一起,而不用考虑开发平台、开发语言或使用的对象模型,以用于实现任何组成的效劳或应用程序。7.1.4ASP.NET的开发语言1.ASP.NET的开发语言简介JScript.NET、C#.NET、VisualC++.NET,甚至Delphi。越来越多的语言也都参加到了Microsoft.NET阵营中,使用各种语言开发的ASP.NET应用,在接受用户访问的时候,将首先被转换成在.NET平台的CLR,然后对代码进行执行。在这些语言中C#.NET是微软公司推荐进行ASP.NET开发的语言,C#是一种面向对象语言,这种语言的语法类似于C和C++语言,又融入了Java语言的优点,保存了开发这熟悉的C语言的语法,又解决了C语言平安性难以控制的问题。在本书的所有实例的开发中,也将使用C#作为开发语言,读者可以在实际的应用过程中举一反三,使用自己熟悉的语言进行ASP.NET的开发。2.C#.NET简介C#语言是微软公司针对.Net平台开发的一种全新的编程语言。尽管C#象是C,和C++语言的升级语言,但是他不象他的前身那样,C#是一个完全面向对象的开发语言。它既有VisualBasic的快速开发的特点,又具有C++的强大的功能。它的风格类似与C、C++和Java。如果你是一个C、C++或者Java的程序员,你会发现你可以很快的使用C#进行开发。和VB.NET一样,C#可以利用公共语言运行时给我们带来的各种好处。例如:语言的交互性,垃圾回收机制,增强的平安性能,以及版本兼容。C#是一种完全面向对象的开发语言,因此在C#中最根本的语法元素就是类。和其他的面向对象语言一样,类是一类具共同属性和操作的对象的集合。一个类可以从另一个类继承,在C#中,类是不可以继承多个类的,但是它可以继承多个接口。每一个类都是由其特有的属性和方法构成的,属性用来保存这个类的对象相关的数据,方法就是定义类的对象能够执行的操作,也就是对象的功能。和其他的面向对象语言一样,C#也提供了继承,接口等其它面向对象的特性。7.1.5小结7.2ASP.NET根底在本书接下来的内容里,本书将利用实例详细地给读者介绍怎样使用ASP.NET来进行效劳器端动态主页的设计。7.2.1.NET的安装与运行环境1.运行环境配置ASP.NET的调试环境操作系统:Windows2000Professional,Windows2000Server,Windows2000AdvancedServer浏览器:IE5.5支持哪几种语言ASP.NET目前能支持3种与语言,C#〔读作"CSharp"〕,VisualBasic,andJscrip。使你的机器支持ASP.NET,必须满足以下配置:硬件要求:1、CPU:IntelPentiumII300MHz〔最好IntelPentiumIII600MHz〕2、内存:96MB〔最好128MB〕3、磁盘空间:250MB〔完全安装〕155MB〔快速安装〕4、显示:800x600,256colors5、CD-ROM:required软件要求:1、MicroSoftWindows2000+SP12、MicroSoftInternetExplorer5.53、IIS5.04、其它:MDAC2.6ASP.NET的安装过程很简单,只需按照简单提示安装即可。ASP.NET〔NGWSSDK〕的下载地址:://microsoft/downloads/details.aspx?FamilyID=262d25e3-f589-4842-8157-034d1e7cf3a3&displaylang=en安装VS.NET版本的记得必须先安装以下内容:1、windows2000sp12、安装IE5.53、必须要装有iis,而且iiS要带frontpage扩展4、frontpage效劳扩展的补丁QFE需要注意的是,如果在安装IIS之前就已经安装好了VS.NETIDE的话,需要重新安装MS.NETFramework才能在VS.NETIDE中创立ASP.NET应用程序。2.运行VisualStudio.NETIDE环境微软的VS.NETIDE〔IntegrationDesignEnvironment〕是一个非常丰富的变成环境,可以进行C#、VC++、VB.NET、ASPX等的编程,你甚至也可以编写ASP文件。首先看到的是IDE,如图1所示。VS.NETIDE看起来很熟悉,和低版本的VSIDE类似,它在低版本的VSIDE的根底上又有了新的提高。图1VisualStudio.NET的IDE整体布局然而,IDE的变化绝非是外表性的。所有的.NET语言都使用同一个IDE,其中的新工具的功能是强大而全面的,用户可以把任何一个设计窗口设定为自动隐藏〔就象Windows中的任务条一样〕,这样就可以使桌面显得不太凌乱,如图2所示:图2右上角的“图钉〞按钮用来控制窗口自动隐藏主工作区是由一系列的标签和窗口组成,也就是说IDE不会同时显示许多的窗口或代码模块,在翻开对象的源代码时,IDE就会在相应对象的主区内增加新按钮。如图1所示,WebForm1.aspx就是当前翻开的代码模块。IDE中还有一个新的被称作任务列表的窗口,其中的内容包括你和IDE创立的工程。例如,如果在编译一个VB工程时收到一个错误信息,VB就会在任务列表中创立一个条目来解释这个问题。如图1所示,最下方的窗口就是任务列表窗口。用户还可以直接在任务列表中添加一个条目,或者通过在代码中建立以"TODO:"开头的注释把代码中的一个位置与任务联系起来。任务清单是一个非常强大的工具,它能使开发者节约不少的时间,并有助于开发者能够更好地调试自己的软件。过去,VB隐藏了创立一个窗体所必需的全部工作。我们使用IDE创立一个窗体,并在Initialize事件处理程序中添加代码,但对于发生在这两者之间的过程那么无能为力。在VB.NET中,窗体成了一个类,包含创立窗体的全部代码,一些高级开发人员可以通过这些代码完成一些很"酷"的工作。代码编辑器还包括一些新的特性,例如可以自动地对编辑的源代码进行"缩进"处理,而且可以显示源代码的行号,如图3所示:图3VS.NETIDE将原本封闭的代码开放出来在VS.NET的IDE中,提供了非常多便利的功能,帮助开发者快速平安的完成开发工作。想要完整地介绍VS.NETIDE的使用可能需要一本书的篇幅,因此,在这里就不详细地介绍了,在本书后面的内容里,会将各种常用的功能分别进行介绍。7.2.2名字空间〔namespace〕和ASP.NET的文件类型1.什么是名字空间〔namespace〕?对象一直是面向对象程序开发〔OOP〕的中心。在MicroSoft.NET中也不例外,MicroSoft.NET中的VB、VBA、VC++、VBScript等各种语言都是如此,不同的开发语言有不同的对象,这些对象均是各个语法所提供的的“资源〞,程序开发人员可以利用这些资源,来编写所需的系统,就相隔房屋的一样,建筑师使用同样的素材,然而盖好的房子可能不尽相同。在过去的ASP中,仅有Server、Request、Response等七个对象。而在ASP.NET的对象库中却分得很细。例如在ASP.NET网页中要通过SQL语句获得数据库中的数据,必须使用“System.Data.sqlClient〞,这是NameSpace名称。在System.Data.sqlClient下,又有很多类〔Class〕。每个Class可视为一个对象,因为Class下有属性、方法和事件等所以,最上层的NameSpace是看作是同类型对象的集合,一个NameSpace之下可拥有多个Class。他们之间的关系如图4所示,Namespace实际是一个具有紧密联系的对象类型的集合,而Class代表了系统中的一个对象类型:ASP.NETNameSpaceASP.NETNameSpaceClass1NameSpaceClass2Class3Class42.如何应用名字空间〔NameSpace〕?<%@ImportNamespace="System.Globalization"%>〔在ASPX文件中的书写格式〕<%@ImportNamespace="DataEmployee"%>或者usingSystem.Data;〔在C#文件中的书写格式〕usingSystem.Data.OldDb;以上表示在ASP.NET网页中使用了四个NameSpace,接下来我们要申明变量,但此变量必须是已引用的四个NameSpace所属的Class,如:OleDbConnectionMyConnection;OleDbDataSetCommandMyCommand;在上面的ASP.NET代码中OleDbConnection及OleDbDataSetCommand类型都是名字空间之下的Class。3.ASP.NET中的文件类型?在ASP.NET中,相对于以前的ASP来说,增加了很多种文件类型,如表1所示,表1中的每一种文件扩展名就代表ASP.NET的一种文件类型:表1ASP.NET中的文件类型文件扩展名用途及说明Global.asaxASP.NET系统环境设置文件,进行应用程序初始化的过程。.aspx內含ASP程序代码的文件,浏览器可执行此类文件,向效劳器提出浏览请求.asmx制作WebService的原始文件.sdl制作WebService的XML格式的文件.vb或.cs在非ASP.NET环境下,执行WebService的文件.aspc可重复使用在多个.aspx的文件,此文件內可含有控件.ascx內含UserControl的文件,可內含在多個.aspx文件中7.2.3C#语言介绍由于篇幅的原因和C#本身与C++语言类似的特点,在本书中将不会对C#语言的语法进行详尽的介绍。在本节的内容里,将针对C#自身特殊的地方进行介绍。1.C#程序的根本结构C#语言是从C和C++语言演变而来,是一种简单、现代、面向对象和类型平安的编程语言。C和C++程序员会很快熟悉它。C#的目标是将Visual
Basic的高效率同C++原有的强大功能结合起来。在此将通过“HelloWorld〞程序讲解C#语言的一些根本结构。usingSystem;classHelloWorld{publicstaticvoidMain〔〕{
Console.WriteLine〔"HelloWorld"〕;
}}一个C#语言编写的应用程序具备的根本结构,即:名字空间、类、程序入口〔静态Main方法〕。名字空间在前面已经讲过,它是同类型类的集合,要使用名字空间中的类,首先应该在程序中引用名字空间。在C#中引用名字空间要使用“using〞关键字处理,而声明自定义名字空间使用“namespace〞关键字处理。本例引用了系统类库中“System〞名字空间,并且自定义名字空间名为“Hello〞。“usingSystem;〞类是描述一群具有相似特性〔属性〕、相同行为〔方法〕与意义,且和其他对象间有共同关系的对象。类,通过实体化过程后成为对象,即一个真正可以用于应用的程序。本例类名为“HelloWorld〞。Main方法是程序的入口点,程序控制在该方法中开始和结束。该方法在类的内部声明。作为程序入口点,由于该方法需要在类被实体化前存在,那么它必须为静态的〔即采用static修饰〕。其中Main方法使用void修饰说明该方法不返回值。写Main方法时既可以不使用参数,也可以使用参数〔本例为不使用参数〕。在Main方法中可以创立对象及调用其他方法。Main方法是HelloWorld类的成员。它具有static修饰符,因此是Hello类的方法而不是此类的实例的方法在上面的例如中,还应用到了Console类。Console类是.NETFramework专门为开发控制台应用程序封装的一个类,其中包含了控制台应用程序所需的获取标准输入、输出和错误流的操作。同时对从控制台读取、写入字符和字符串的应用程序提供根本支持。本例中使用了“WriteLine〞方法,即向控制台中写入字符串“HelloWorld〞。2.C#的类本章已经提到,C#是一个完全的面向对象的编程语言,因此类可以说是C#程序中最主要的组成局部。和其他编程语言类似C#中的类是具有相同数据结构和操作的对象的集合,它们同样是一个对象的集合。下面的代码将创立一个person类。publicclassperson{//在这里面可以增加属性和方法。}现在给上面的person类增加一个姓名和年龄的属性。publicclassperson{privatestring_Name;privateint_Age;publicstringName{get{return_Name;}set{_Name=Value;}}publicintAge{get{return_Age;}set{_Age=Value;}}}接下来给上面的类增加一个ToString〔〕的方法。publicclassperson{privatestring_Name;privateint_Age;publicperson〔〕{////TODO:Addconstructorlogichere//}publicstringName{get{return_Name;}set{_Name=Value;}}publicintAge{get{return_Age;}set{_Age=Value;}}publicstringToString〔〕{return姓名:+_name+,年龄:+_Age;}}这样就完成了一个完整的类的定义,需要注意的是类在定义的时候需要指定他的访问权限,这个设定是通过类的修饰符来定义的。在C#中,可以有下面的一种或几种的组合:new、public、protected、internal、private、abstract和sealed,同样的修饰不能出现两次以上〔包括两次〕。7.2.4小结本节着重介绍了ASP.NET技术的相关根底知识,包括ASP.NET技术的调试平台的安装与配置、名字空间的含义和ASP.NET工程中包含的文件类型。最后,本节还简要介绍了本章中用来进行ASP.NET开发的C#语言的相关根底知识,包括:C#程序的根本结构和C#程序中的类。7.3ASP.NET网络表单〔WebForm〕7.3.1网络表单〔WebForm〕介绍1.什么是网络表单〔WebForm〕?表单〔Form〕在ASP.NET中具有特殊的含义。和HTML的中的Form标记不同,在ASP.NET中WebForm那么代表了一个一个的Web页面。总的看来,Form就像是一个容纳各种控件的容器,各种控件都必须直接或者间接的和它有依存关系。因此,有的开发者称其为“Web页面〞。WEB表单,实际上是一个“对象〞〔Object〕,具有的其特有的属性和方法。MS.NET架构里面一个比较重要的概念就是“对象〞:所有的控件都是对象,甚至数据类型都成了对象;每种数据类型都有自己特有的属性和方法。WEBFORM文件的后缀名是ASPX。当浏览器第一次请求一个ASPX文件时,WEBFORM页面将被CLR〔commonlanguageruntime〕编译器编译。此后,当再有用户访问此页面的时候,由于ASPX页面已经被编译过,所以,CLR会直接执行编译过的代码。这和ASP的情况完全不同。ASP只支持VBScript和JavaScript这样的解释性的脚本语言。所以ASP页面是解释执行的。当用户发出请求后,无论是第一次,还是第一千次,ASP的页面都将被动态解释执行。而ASP.NET支持可编译的语言,包括VB.NET、C#、Jscript.NET等。所以,ASP.NET是一次编译屡次执行。为了简化程序员的工作,ASPX页面不需要手工编译,而是在页面被调用的时候,由CLR自行决定是否编译。一般来说,下面两种情况下,ASPX会被重新编译:1〕ASPX页面第一次被浏览器请求;2〕ASPX被改写由于ASPX页面的编译特性,使ASPX页面的访问速度要比PHP和ASP页面的访问速度提高很多。2.一个简单的WebForm在ASP.NET中,ASPX文件是最常用的一种文件,微软公司建议将所有相关的文件,哪怕是纯HTML文件都以ASPX文件的形式来保存,这样能够提高访问的速度。下面就是用前面学习的知识来创立第一个WebForm。首先在VS.NET中创立新一个VisualC#工程,如图4所示,在模板窗口中选择ASP.NETWeb应用程序,然后在下面的“位置〞栏中填入ASP.NET应用在效劳器上的位置,填写的格式是使用URL的方式,或者使用程序的默认值。点击确定按钮,完成应用的创立工作。图4VS.NETIDE新建工程窗口接下来翻开解决方案管理器,创立eg1.aspx文件,双击该文件,在主工作区就会显示该页的布局和代码,通过点击主工作区下放的HTML按钮,就能够看到eg1.aspx的代码,把下面的代码拷贝到eg1.aspx文件中,然后从浏览器访问这个文件:例1:<!--源文件:eg1.aspx--><formaction="eg1.aspx"method="post"><h3>姓名:<inputid="name"type=text>性别:<selectid="sex"size=1><option>男</option><option>女</option><option>保密</option></select><inputtype=submitvalue="查询"></form>然后就可以在浏览器中观察eg1.aspx了,如图5所示,地址的格式如下:://yourhost/yourapp/eg1.aspx图5例1的执行结果其中yourhost是当前应用所在的效劳器名,yourapp是文件所在应用的名称。由于我们没有对表单提交做任何响应,所以,当按下“查询〞按钮后,页面的内容没有什么改变。3.ASP.NET中Web页的处理过程这一节我们将深入到内部,看看页面是怎样被处理的。和所有的效劳器端进程一样,当ASPX页面被客户端请求时,页面的效劳器端代码被执行,执行结果被送回到浏览器端。这一点和ASP并没有太大的不同。但是,的架构为我们做了许多别的事情。比方,它会自动处理浏览器的表单提交,把各个表单域的输入值变成对象的属性,使得我们可以像访问对象属性那样来访问客户的输入。它还把客户的点击映射到不同的效劳器端事件。了解WEB页面的处理过程很重要。这样你可以仔细地优化你的代码,提高代码的效率。每一次页面被请求,或者页面事件被提交到效劳器,运行环境将执行必要的代码,重建整个页面,把结果页面送到浏览器,然后抛弃页面的变量、控件的状态和属性等等页面信息。当下一次页面被处理时,运行环境是不知道它的上一次执行情况的。在这个意义上,ASPX页面是没有状态的。这也是协议的特点〔为了加速页面的访问,在页面里面可以使用缓存机制,也就是保存页面的执行结果,下一次页面被请求时,直接送回上一次的执行结果。〕。在ASP中,当页面被提交到效劳器端时,只有那些用户输入的值被传递到效劳器。其他的比方组件的属性、变量的值,是不会传递的。所以效劳器无法了解组件的进一步的信息。在中,页面对象的属性、页面控件的属性被称为“viewstate〞〔页面状态〕。页面状态在中被受到特别照顾。在实现上,通过把页面的状态封装到一个隐藏的输入域,从而可以在不同的页面之间实现传递页面的状态。在页面处理的内部过程是按照如图6所示的顺序进行的:图6页面处理的内部过程的顺序首先,页面的状态被恢复,然后触发Page_Load事件。在这个过程中,你可以读取或者重置页面的属性和控件的属性,根据IsPostBack属性判定页面是否为第一次被请求,执行数据绑定,或者进行数据库连接等操作。第二个阶段是事件处理,也就是处理访问者在本页访问时所激发的各种事件。用户可以处理特定的事件,也可以在表单需要校验的情况下,根据IsValid属性判定页面的输入是否有效。第三个阶段Page_unLoad是在访问者离开本页的时候开始的,在这个阶段通常进行一些清理工作,比方关闭翻开的文件和数据库链路,或者释放对象等。上面我们分析了页面处理最重要的几个阶段。但是实际上,页面的处理过程远比上面的复杂,因为在实际应用中,页面上的每一个控件都需要进行适当的初始化。7.3.2什么是事件?在中,事件是一个非常重要的概念。所谓事件就是指一个应用程序上的任何组成元素的状态因为外部或者内部的原因造成的状态的一次改变,开发者能够将一定的方法和事件连接起来,一旦事件发生,程序就会执行相应的方法,作为对事件的响应来处理控件的变化。在ASP.NET中,事件就是页面上的控件因为访问者或者自身的原因,其状态发生改变的情况。ASP.NET提供了非常便利的机制帮助开发者完成对事件的处理。下面的例子将说明事件在WebForm中的应用。1.事件的处理在一个WebForm中,可以包含一个或者多个Web元素或者控件,每一个Web元素或者控件都有假设干可以进行处理的消息。在下面的例如中,页面包含三个Web控件,一个Label控件,两个Button控件,用户可以点击两个Button中的任意一个,点击的事件将被程序处理,在Label控件上显示相应的信息。例如是由两个文件组成,其中“eg2.aspx〞文件是ASP.NET的页面文件,“eg2.aspx.cs〞文件是处理eg2.aspx页面的相应事件的代码文件。例2:<!--源文件:eg2.aspx--><!DOCTYPEHTMLPUBLIC"-//W3C//DTDHTML4.0Transitional//EN"><HTML><HEAD><title>WebForm1</title><metaname="GENERATOR"Content="MicrosoftVisualStudio.NET7.1"><metaname="CODE_LANGUAGE"Content="C#"><metaname="vs_defaultClientScript"content="JavaScript"><metaname="vs_targetSchema"content="://schemas.microsoft/intellisense/ie5"></HEAD><bodyMS_POSITIONING="GridLayout"bgColor="#00ccff"><formid="Form1"method="post"runat="server"><FONTface="宋体"><asp:Labelid="Label1"style="Z-INDEX:101;LEFT:16px;POSITION:absolute;TOP:16px"runat="server"Width="226px"Height="42px"BackColor="Silver"BorderColor="Black"BorderStyle="Double"BorderWidth="1px"ForeColor="Red"><divalign="center">请点击按钮</div></asp:Label><asp:Buttonid="Button1"style="Z-INDEX:102;LEFT:264px;POSITION:absolute;TOP:24px"runat="server"Width="88px"Height="32px"Text="按钮一"></asp:Button><asp:Buttonid="Button2"style="Z-INDEX:103;LEFT:368px;POSITION:absolute;TOP:24px"runat="server"Width="88px"Height="32px"Text="按钮二"></asp:Button></FONT></form></body></HTML>可以看到在eg2.aspx中,添加了三个Web控件,分别是asp:Label:Label1、asp:Button:Button1和asp:Button:Button2。在eg2.aspx的第一行代码中,PageLanguage一项设定了本页的效劳器端代码使用的是C#,Codebehind中设定了本页的效劳器端代码保存在中。页面初始显示如图7所示:图7eg2.aspx初始显示/*源文件:eg2.aspx.cs*/usingSystem;usingSystem.Collections;usingSystemponentModel;usingSystem.Data;usingSystem.Drawing;usingSystem.Web;I;namespaceCStest{{privatevoidButton1_Click〔objectsender,System.EventArgse〕{按钮一被点击了</div>";}privatevoidButton2_Click〔objectsender,System.EventArgse〕{}}}名字空间下的Page类。然后在WebForm1添加了两个消息处理函数非别为Button1_Click和Button2_Click,这两个函数分别响应“按钮一〞和“按钮二〞的点击事件。在这两个函数体中,首先改变了Label1控件的ForeColor属性,也就是改变Label1控件的前景色,这样显示出来的字体就会改变成新设定的颜色,然后改变Label1控件中显示的文字,来区分两个按钮的点击事件。点击“按钮一〞和“按钮二〞后页面情况如图8和图9所示:图8点击“按钮一〞后的页面显示图9点击“按钮二〞后的页面显示7.3.3WebForm中的控件1.什么是控件?在前面的例子里,在一个WebForm中添加了按钮控件和Label控件,并且给控件添加事件处理函数来处理访问者对控件的操作,那么控件的具体定义是什么呢?在ASP.NET中,一切都是对象,控件也是WebFrom中能够容纳的对象的一种,也就是说控件是具有可重用性、具有一定的外观、具有一定的属性和方法,能够完成一定的功能,并且能够被用户在WebForm中引用的对象或者组件,大多数控件还可以响应事件。在eg1.aspx简短的代码中,就是用到五个控件,它们分别是asp:textbox、asp:dropdownlist、asp:label、Button和Form控件,如图10所示:图10Eg1.aspx中使用的控件从eg1.aspx的代码中可以看到,一个WebForm最主要的组成局部就是控件,微软公司为了方便开发者使用,将控件分为三类,每一类控件都有其自身的特点。2.控件的分类在ASP.NET中的控件主要分为三类:效劳器端控件〔ServerControl〕、HTML控件〔HTMLControl〕和用户自定义控件〔UserControl〕。效劳器端控件〔ServerControl〕就是指在效劳端存在和运行的控件。效劳器端控件也有自己的外观,在客户端浏览器中,ServerControl的外观由HTML代码来表现。ServerControl会在初始化时,根据客户的浏览器版本,自动生成适合浏览器的HTML代码。以前做网页或者做ASP程序时候,必须考虑到浏览器的不同版本对HTML的支持有所不同,比方Netscape和IE对DHTML的支持就有所不同。当时,解决浏览器版本兼容问题的最有效方法,就是在不同版本的浏览器中作测试。现在,由于ServerControl自动适应不同的浏览器版本,也就是自动兼容不同版本的浏览器,程序员的工作量减轻了许多。常用的效劳器端控件主要有如下几种:文本输入控件〔ASP:textbox〕、按钮控件〔ASP:Button〕、复选控件〔ASP:CheckBox〕、单项选择控件〔ASP:RadioButton〕、验证控件、选择控件和列表控件等。HTML控件比较常见,也就是通常用来制作网页的HTML语言中的TAG,但是和以往的HTML不同的是,HTML控件在效劳器端是可见的,也就是可以通过效劳器端运行的程序来改变HTML控件的属性或者处理HTML控件的事件。ASP.NET中提供了增加内嵌效劳器控件的功能,使开发者能够屡次的轻松增加你所定义的各种控件。事实上,对于表单等各种控件,可以不用更改或者稍微更改一下就可以屡次使用的。在通常情况下,把一个用作效劳器控件的web表单统称为用户控件,用一个.ascx为后缀的文件保存起来,这样的保存使得它不被当作一个web表单来运行,当开发者在一个.aspx文件中使用它时,使用Register方法来进行调用。假设有一个文件名为saidy.ascx的文件,那么用下面的语句来调用它:<%@RegisterTagPrefix="Acme"TagName="Message"Src="saidy.ascx"%>上面的TagPrefix标记为用户控件确定一个唯一的名字空间,TagName为用户控件确定一个唯一的名称,也可以用其它的名字代替“Message〞,Src为确定所包含的文件名称和路径。在WebFrom中就可以用下面的语句来调用这个自定义控件了:<Acme:Messagerunat="server"/>接下来将通过几个例如来分别说明这三类控件的使用方法。3.效劳器端控件〔ServerControl〕的使用在下面的例子eg4.aspx里,将通过一个电子邮件和密码的页面的构建给读者介绍效劳器端文本输入控件和验证控件的使用。文本输入控件目的是让用户输入文本,文本模式是一个单行的输入框,但是用户可以根据自己的需要把它改成密码输入模式或者多行输入模式。在下面的例子中用单行文本输入模式和密码模式来说明。在ASP.NET中,输入一个文本,可用下面的语句来表示:<!--输入邮件地址--><asp:TextBoxid=emailwidth=200pxmaxlength=60runat=server/>第一句为注释,第二句就是文本输入控件的引用,开发者可以设定输入框的宽度和文本的长度,runat=server为表示运行于效劳器端。下面来看看输入控件的校验,在这里使用校验控件来完成。使用校验控件,一个简单的语句就可以实现在普通的html页面上的复杂的JavaScript、VBScript或者其他代码的验证。首先用户必须输入邮件地址:<!--验证邮件的有效性!->不能为空--><asp:RequiredFieldValidatorid="emailReqVal"ControlToValidate="email"ErrorMessage="Email."Display="Dynamic"Font-Name="Verdana"Font-Size="12"runat=server>*</asp:RequiredFieldValidator>ControlToValidate="email"属性为针对TextBoxid=email的文本框,Display属性我们定义为“Dynamic〞,即为当鼠标光标所在位置发生变化时属性根据条件变化。如果输入为空,那么打印出“*〞字符出来。在通常情况下,邮件地址总会包含一些特定的字符,在验证的时候,就可以要求用户输入的内容中包含我们规定的字符。<!--验证邮件的有效性!->必须包含有效字符--><asp:RegularExpressionValidatorid="emailRegexVal"ControlToValidate="email"Display="Static"ValidationExpression="^[\w-]+@[\w-]+\.〔com|net|org|edu|mil〕$"Font-Name="Arial"Font-Size="11"runat=server>不是有效邮件地址</asp:RegularExpressionValidator>ControlToValidate="email"语句的作用和扇面介绍的一样,ValidationExpression="^[\w-]+@[\w-]+\.〔com|net|org|edu|mil〕$"表示在输入的邮件地址里要包含的内容,如果没有包含这些内容,那么打印出“不是有效邮件地址“这个提示。对密码的校验也是同样的道理,二者主要的差异是,对于密码通常要求要确认输入一次,校验两次输入的密码是否相同。用下面的代码来完成校验:<!--输入确认密码->两个密码是否相等--><asp:CompareValidatorid="CompareValidator1"ControlToValidate="passwd2"ControlToCompare="passwd"Display="Static"Font-Name="Arial"Font-Size="11"runat=server>密码不相等</asp:CompareValidator>ControlToValidate="passwd2"ControlToCompare="passwd"此语句即为两个密码之间的比较,如果不相等那么打印出“密码不相等“的提示。下面是例三完整的源代码:例三:<!--源文件eg3.aspx--><html><body><br><br><br><divalign="center"><h3><fontface="Verdana">电子邮件和密码验证页</font></h3></div><divalign="center"><formmethod="post"runat="server"ID="Form1"><hrwidth="600"size="1"noshade><br><br><!--标题--><asp:ValidationSummaryID="valSum"runat="server"HeaderText="按照下面的要求填写:"DisplayMode="SingleParagraph"Font-Name="verdana"Font-Size="12"/><p/><tableborder="0"width="600"><tr><tdalign="right"><fontface="Arial"size="2">电子邮件:</font></td><td><!--输入邮件地址--><asp:TextBoxid="email"width="200px"maxlength="60"runat="server"/></td><td><!--验证邮件的有效性!->不能为空--><asp:RequiredFieldValidatorid="emailReqVal"ControlToValidate="email"ErrorMessage="Email."Display="Dynamic"Font-Name="Verdana"Font-Size="12"runat="server">*</asp:RequiredFieldValidator><!--验证邮件的有效性!->必须包含有效字符--><asp:RegularExpressionValidatorid="emailRegexVal"ControlToValidate="email"Display="Static"ValidationExpression="^[\w-]+@[\w-]+\.〔com|net|org|edu|mil〕$"Font-Name="Arial"Font-Size="11"runat="server">不是有效邮件地址</asp:RegularExpressionValidator></td></tr><tr><tdalign="right"><fontface="Arial"size="2">密码:</font></td><td><!--输入密码--><asp:TextBoxid="passwd"TextMode="Password"maxlength="20"runat="server"/></td><td><!--输入密码->密码不能为空--><asp:RequiredFieldValidatorid="passwdReqVal"ControlToValidate="passwd"ErrorMessage="Password."Display="Dynamic"Font-Name="Verdana"Font-Size="12"runat="server">*</asp:RequiredFieldValidator><!--输入密码->包含其中有效字符--><asp:RegularExpressionValidatorid="passwdRegexBal"ControlToValidate="passwd"ValidationExpression=".*[!@#$%^&*+;:].*"Display="Static"Font-Name="Arial"Font-Size="11"Width="100%"runat="server">密码必须包含〔!@#$%^&*+;:〕</asp:RegularExpressionValidator></td></tr><tr><tdalign="right"><fontface="Arial"size="2">再次输入密码:</font></td><td><!--输入确认密码->--><asp:TextBoxid="passwd2"TextMode="Password"maxlength="20"runat="server"/></td><td><!--输入确认密码->不能为空--><asp:RequiredFieldValidatorid="passwd2ReqVal"ControlToValidate="passwd2"ErrorMessage="Re-enterPassword."Display="Dynamic"Font-Name="Verdana"Font-Size="12"runat="server">*</asp:RequiredFieldValidator><!--输入确认密码->两个密码是否相等--><asp:CompareValidatorid="CompareValidator1"ControlToValidate="passwd2"ControlToCompare="passwd"Display="Static"Font-Name="Arial"Font-Size="11"runat="server">密码不相等</asp:CompareValidator></td></tr></table><p/><inputrunat="server"type="submit"value="提交"ID="Submit1"NAME="Submit1"><p/><hrwidth="600"size="1"noshade></form></div></body></html>eg3.aspx的执行结果如图11所示:图11页面eg3.aspx的执行结果在eg3.aspx的文本输入控件中进行输入,如果输入的内容与所需要填写的内容不符,比方两个密码不同或者填写了无效的电子邮件地址,那么将得到如图12所示的结果。图12页面eg3.aspx中进行不正确输入的结果在例三中,使用到了文本输入控件和三种校验控件,根本上所有效劳器端控件的使用都和上面用到的控件的使用方法相同,就是将控件放置在WebForm中适宜的位置上,然后给控件的属性设置适当的值,来控制控件完成所需要的功能。接下来看一下HTML控件的使用。4.HTML控件的使用HTML控件的使用和效劳器端控件的使用非常类似,但是其功能相对效劳器端控件来说较弱,在应用中通常是通过事件响应函数对HTML控件的状态变化进行处理。例四〔eg4.aspx〕就是典型的HTML控件的使用,其中引用的HTML控件为HTMLTextArea控件。和HTML中的一样,在ASP.NET中的TextArea也是一个多行输入框。TextArea的宽度由它的Cols属性决定,长度由Rows属性决定。TextArea控件的定义如下:<textareaid="TextArea1"cols=40rows=4runat=server/>例4:首先是eg4.aspx文件的源代码:<!--源文件eg4.aspx--><HTML><HEAD><title>eg4</title></HEAD><bodybgcolor="#ccccff"><h3><fontface="Verdana">HTML控件:HtmlTextArea的使用</font></h3><formrunat="server"ID="Form1"><fontface="Verdana"size="-1">请任意填写:<br><textareaid="TextArea1"cols="40"rows="4"runat="server"></textarea><inputtype="submit"value="Submit"runat="server"ID="Submit1"><p/><spanid="Span1"runat="server"/></font></form></body></HTML>usingSystem;usingSystem.Collections;usingSystemponentModel;usingSystem.Data;usingSystem.Drawing;usingSystem.Web;namespaceCStest{{privatevoidSubmit1_ServerClick〔objectsender,System.EventArgse〕{}}}在Submit1按钮的消息响应程序中,程序取到了TextArea控件中用户填写的文字,然后将这些文字赋值给Span1控件的InnerHtml属性,Span1控件就会将InnerHtml属性中的值显示在页面上。在上面的例子中,HTML控件看起来和HTML语言是一样的,但是html语言书写和以效劳器端控件的实现在思维方式上已经有了很大的不同。对于html语言而言,只是一种标识;而对效劳器端html控件而言,却已演变成为一段程序,一个对象。两者的区别不仅仅是一个写在HTML文件中、一个写在ASP.NET文件中。HTML文件依赖于客户端对标识的解释执行,HTML控件却可以被编译执行,两者在效率上的差异不言而喻。为了提高开发者所开发的程序的重用性,ASP.NET还提供了用户定义控件。接下来就看一看用户定义控件的使用。5.用户自定义控件的使用例5:<!--源代码eg5.ascx--><divalign=center>用户控件例如<br><ahref="eg1.aspx">例如一</a><br><ahref="eg2.aspx">例如二</a><br><ahref="eg3.aspx">例如三</a><br><ahref="eg4.aspx">例如四</a><br><ahref="eg5.aspx">例如五</a></div>控件外观如图13所示:图13用户自定义控件eg5.ascx的外观<%@RegisterTagPrefix="eg5"TagName="linkto"Src="eg5.ascx"%>注册完之后,就可以使用下面的代码在页面中进行对用户自定义控件的引用:<eg5:linktorunat="server"/>eg5.aspx文件的完整源代码如下:<!--源文件eg5.aspx--><%@RegisterTagPrefix="eg5"TagName="linkto"Src="eg5.ascx"%><!--注册小页面控件--><HTML><body><BR><BR><BR><divalign="center">用户自定义控件调用结果<BR><BR><eg5:linktorunat="server"ID="link1"/></div><BR><BR></b
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 硅胶模具合同范例
- 融资开店合同范例
- 卖房外包合同范例
- 股东协议合同范例范例
- 工资包干合同范例
- 临时铺面合同范例
- 自营采购服务合同范例
- 转让木业厂房合同范例
- 私房房买卖合同范例
- 填写公司合同范例
- 金刚砂耐磨地面施工安全方案
- 期末测试(试题)-2024-2025学年六年级上册数学苏教版
- GB/T 36547-2024电化学储能电站接入电网技术规定
- 品牌合作经营合同
- 期末测试卷(一)2024-2025学年 人教版PEP英语五年级上册(含答案含听力原文无听力音频)
- 2023-2024学年广东省深圳市南山区八年级(上)期末英语试卷
- 2024广西专业技术人员继续教育公需科目参考答案(100分)
- 2024年上海市中考语文备考之150个文言实词刷题表格及答案
- 2024年汉口银行股份有限公司招聘笔试冲刺题(带答案解析)
- 中医跨文化传播智慧树知到期末考试答案章节答案2024年浙江中医药大学
- 2024年日历表(空白)(一月一张-可编辑做工作日历)
评论
0/150
提交评论