




已阅读5页,还剩42页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第7章 ASP.NET创建Web应用程序,第7章 ASP.NET创建Web应用程序,【本章导读语】 ASP.NET 是一种用于创建动态 Web 应用程序的技术,其程序可以在互联网上通过Web运行。ASP.NET 是 .NET Framework 的一部分;因此可以采用大多数与 .NET 兼容的语言编写 ASP.NET 应用程序,包括 Visual Basic、C# 和 J#。ASP.NET的Web Forms 页面的运行和部署要经过编译,与使用脚本编写语言相比,具有更好的性能。Web Forms 允许构建强大的基于窗体的 Web 页面。构建这些Web页面时,可以使用 ASP.NET 服务器控件创建常用的 UI 元素并对其进行编写代码以执行常见的任务。这些控件允许从可重用的内置或自定义组件快速构建 Web 窗体,简化页面代码程序的编写。 本章将详细介绍ASP.NET构成,包括ASP.NET如何工作,ASP.NET可以完成什么任务,以及如何创建Web程序。,第7章 ASP.NET创建Web应用程序,ASP.NET Web窗体,2,ASP.NET控件,3,Web控件示例,4,7.1 ASP.NET概述,7.1.1 ASP.NET的页和控件框架,为了更好的通过网络运行应用程序,使客户端不需要安装应用,直接调用Web页面即可运行大量的应用,微软的ASP.NET专门针对Web应用开发,ASP.NET作为一个统一的 Web 开发模型,使开发人员使用尽可能少的代码生成企业级 Web 应用程序所必需的各种功能与服务。ASP.NET 包含在微软的 .NET Framework之中,可以访问调用 .NET Framework 中的类。程序员也可以使用与公共语言运行库 (CLR) 兼容的任何语言来编写应用程序的代码,这些语言包括 Microsoft Visual Basic、C#、JScript .NET 和 J#。使用这些语言,可以开发利用公共语言运行库、类型安全、继承等方面的优点的 ASP.NET 应用程序。,ASP.NET页和控件框架是一种微软的编程框架,ASP.NET 页和控件框架在Web服务器上运行,根据客户端浏览器的请求动态生成Web网页,目前为止任何浏览器和客户端设备都可以向服务器端请求ASP.NET 网页。相同的ASP.NET 网页可以被多个浏览器同时调用访问,并以特定浏览器的标记形式呈现,例如HTML的形式。同时ASP.NET 网页可以利用浏览器的功能,做特定的开发设计。同时ASP.NET 还支持基于Web的各种设备,比如移动电话,手持计算机和个人数字助理PDA等的移动控件都能访问ASP.NET 网页。,7.1 ASP.NET概述,ASP.NET 网页同微软的Windows程序一样是完全面向对象的。可以在 ASP.NET 网页中使用控件、类属性、方法和事件来处理各种HTML 元素。ASP.NET网页在服务器的IIS(互联网信息服务器)上运行,网页上的代码在服务器上执行后为客户端提供统一的模型,这样程序开发人员就不需要考虑基于Web的互联网程序中的客户端和服务器的实现细节,只需要专注于网页功能的实现。ASP.NET页和框架在网页的整个存在周期中自动维护页面及其页面上的所有控件的状态。 与.NET的Windows程序类似,ASP.NET网页和框架也可以将用户界面的功能,或者特定的应用功能,封装成为可以重用的控件。编写的控件编译后就可以供任何ASP.NET页面编程调用,这些控件在呈现期间放入 ASP.NET 网页中。 ASP.NET 页和控件框架提供了美化网页界面和控制整个网页外观的功能,可以通过ASP.NET 页和控件框架定义网页的主题和外观,也可以控制页面分组及页面内的控件的主题与外观。 除了页面框架主题外,ASP.NET还可以定义母版页,这样可以使Web应用程序中的所有网页具有外观一致的布局。一个母板页可以定义某个应用程序中的所有网页或者某组网页的外观布局与标准行为,母板页里面可以加载多个子网页,各个子网页在客户端请求时通过母板页合并加载,形成组合并加载。,7.1 ASP.NET概述,7.1.2 ASP.NET编译器,ASP.NET 代码需要经过编译后运行,这样可以形成提供强类型,性能优化和早期绑定等优点,公共语言运行库(CLR)会将经过编译的代码编译为本机的机器代码,从而具备很好的程序性能。 了使用应用程序代码执行用户提出的请求提供服务,ASP.NET 必须首先将代码编译成一个或者多个程序集才能使应用程序为多个客户端提出的请求进行服务。程序集的文件扩展名一般为 .dll 的文件。因为Web应用程序可以使用多种不同的语言来编写 ASP.NET 代码,比如 Visual Basic、C#、J# 和其他语言等。因此,当在编译代码时便一起首先会将代码翻译成Microsoft 中间语言 (MSIL) ,MSIL与具体的语言和 CPU指令无关的表示形式。运行时,MSIL 将运行在 .NET Framework 的上下文中,.NET Framework 会将 MSIL 翻译成 CPU 特定的指令,这样就可以在计算机上的处理器运行应用程序。 当用户第一次请求网站上的网页及其相关的资源时,ASP.NET 会自动编译应用程序代码和这些网页需要依赖资源。一般情况下,ASP.NET 为每个应用程序目录,比如 App_Code目录等,分别创建一个程序集,并且为主目录创建一个程序集。当一个目录中的文件是用不同编程语言编写的时候,编译器将为每种语言分别创建程序集。 ASP.NET 利用运行库调试基础结构来提供跨语言和跨计算机调试支持。可以调试托管和非托管对象,以及公共语言运行库和脚本语言支持的所有语言。,7.1 ASP.NET概述,7.1.3 ASP.NET安全结构,为了避免B/S结构运行方式带来的网络安全威胁,ASP.NET除了 使用全部.NET 的安全功能外,还提供了更加高级的安全基础结构,包括对用户进行身份验证和授权,并执行其他与安全相关的功能。在服务器端可以使用由 IIS 提供的 Windows 身份验证对用户进行身份验证,还可以通过创建的应用程序数据库使用 ASP.NET Forms 身份验证,以及 ASP.NET 成员资格来管理身份验证。另外,还可以使用 Windows 组或用户自己的自定义角色数据库以及使用 ASP.NET 角色来管理 Web 应用程序的功能和信息方面的授权。开发者可以根据应用程序的需要方便的添加,组合或者移除这些安全结构方案。 ASP.NET 始终使用特定的 Windows 标识运行,开发人员可以充分利用Windows 的安全功能,比如 NTFS 访问控制列表 (ACL)、数据库权限等来保护应用程序的安全。,7.1 ASP.NET概述,7.1.4 状态管理功能,ASP.NET 提供了良好的内部状态管理功能,状态管理可以够存储Web网页请求期间的所有信息,例如客户提交的信息或商品信息的内容。以保存和管理应用程序会话、页河用户特定和开发人员定义的信息。这些信息可以独立于页上的任何控件。 ASP.NET 提供了分布式状态功能,使应用程序能够管理一台计算机或数台计算机上同一应用程序的多个实例的状态信息。Web窗体上控件的状态信息,如文本框中输入的数据、下拉列表中的选项等存储在隐藏的viewstate字段中,这个字段是服务器生成的页面的一部分,并传送给用户。后续的操作称为postback,例如触发事件,需要服务器端进行处理(如提交窗体数据,把这些信息传送回服务器)。在服务器上,这些信息用于重新填充页面对象模型,以便操作它,就像在本地进行修改一样。,7.1 ASP.NET概述,7.1.5 ASP.NET 配置 ASP.NET具备很强的扩展性和灵活性,各种ASP.NET 配置系统可以使Web应用程序更加适用与灵活。通过ASP.NET 配置系统可以定义 Web 服务器、网站或单个应用程序的配置设置。开发人员可以在部署 ASP.NET 应用程序时定义配置设置,并且可以随时添加或修订配置设置。由于ASP.NET 配置设置存储在基于 XML 的文件中。因此对运行的 Web 应用程序和服务器具有最小的影响。由于这些 XML 文件是 ASCII 文本文件,因此对 Web 应用程序进行配置更改比较简单。通过可以扩展配置方案,使应用程序更加符合自己的要求。 7.1.6运行状况和性能监视功能 ASP.NET可以监视 ASP.NET 应用程序的运行状况和性能。开发者可以使用 ASP.NET 运行状况监视可以报告关键事件,这些关键事件提供有关应用程序的运行状况和错误情况的信息。这些事件显示诊断和监视特征的组合,并在记录哪些事件以及如何记录事件等方面提供了高度的灵活性。,7.1 ASP.NET概述,7.1.7 XML Web Services 框架 ASP.NET 支持 XML Web services。XML Web services 是包含业务功能的组件,利用该业务功能,应用程序可以使用 HTTP 和 XML 消息等标准跨越防火墙交换信息。XML Web services 不用依靠特定的组件技术或对象调用约定。因此,用任何语言编写、使用任何组件模型并在任何操作系统上运行的程序,都可以访问 XML Web services。 7.1.8可扩展的周期管理和设计器环境 ASP.NET 有一个可扩展的宿主环境,宿主环境可以控制应用程序的生命周期,所谓应用程序的生命周期是指从用户首次访问该应用程序中的资源,直到应用程序关闭这一整个过程。虽然 ASP.NET 依赖作为应用程序宿主的 Web Internet信息服务器 (IIS),但是 ASP.NET 自身也提供了许多宿主功能。通过 ASP.NET 的基础结构,开发者可以响应应用程序事件并创建自定义 HTTP 处理程序以及 HTTP 模块。 ASP.NET 中提供了对创建 Web 服务器控件设计器,用于可视化设计工具,例如 Visual Studio的增强支持。使用设计器可以为控件生成设计时用户界面,这样开发人员可以在可视化设计工具中配置控件的属性和内容。,返回,7.2 ASP.NET Web窗体,7.2.1 ASP.NET代码模型,ASP.NET窗体同Windows窗体类似,但是,ASP.NET窗体以浏览器的浏览页面的形式出现,其上面的元素如文字、图片和其他各控件都需要网页的支持才能显示和运行。 ASP.NET页面由两部分组成,第一部分使用静态文本和服务器控件组成的用户界面,第二部分是用户界面行为和服务器端代码组成的Web应用程序代码逻辑的实现。,与一般的HTML中嵌入其他开发语言脚本不同,ASPNET提供了全新的代码模型,使代码能够与外在的表示页面分离,这样开发人员能够独立的编写代码而不影响页面的框架与格式,这是ASP.NET同ASP的最重要改进之一,ASP.NET代码模型使得开发和设计团队中的分工更加容易,使代码设计和视图设计分离,并增加了代码和内容的可读性和可维护性。 在ASP.NET的代码模型下,有两种编辑代码的基本方法。第一种方法为只是在.aspx页面文件内包含: / 在这里写客户端代码,仍然可以使用“vbscript“. ,7.2 ASP.NET Web窗体,的脚本代码块中嵌入程序代码,这种方法被称为行内代码(inline code), 部分Web程序开发工具如ASP.NET Web Matrix、Dreamweaver等软件采用的就是这种代码编写模型。第二种方法为实现从Page中派生的类,在独立的文件中保存代码并且通过Page指令把它与.aspx文件联系起来。这种形式一般称为代码分离(code-behind),这种方法也成为代码隐藏技术,Visual Studio.NET则采用是这种编写方法。无论采用那种编程模型,性能和结果基本都是一样的,均可以通过不同的编程工具,又不同的编写方法和使用习惯实现,在采用第二种方式的时候必须在使用ASP.NET的类之前,必须引入类所在的命名空间。 由于ASP.NET的Web窗体的返回处理过程是基于事件驱动型的,页面自身必须提交服务器才能执行相应的代码,因此在每个Web窗体的控件布局代码必须放在HTML代码块中,才能的到执行。 下面通过两个实例演示行内代码模型和在Visual Studio.NET2008实现的分离模型编。,7.2 ASP.NET Web窗体,【示例】使用行内代码模型编写Web应用程序 行内代码编程方法与传统的HTML方法相似,HTML代码和应用程序的功能实现代码一同保存在.aspx页面文件中,Web页面在第一次被访问时编译成Page基类,以后每次访问都是直接有该Page类生成Web页面。下面示例创建TestFile.aspx,并且在HTML代码块中写入了一段C#代码,代码先定义0到5五个数字,然后依次输出到HTML页面上,其代码清单如下: “ + i.ToString(); % 通过浏览器浏览刚创建的TestFile.aspx运行效果如图7-1所示:,7.2 ASP.NET Web窗体,图7-1 TestFile.aspx运行效果如图,行内代码的ASP.NET网页代码编写方式编辑简单,采用传统的Dreamweaver、记事本、写字本等均能进行独立的编写,对于同一个Web应用程序也可以使用不同的语言进行编写,但需要注意,同一个Web页面一般只采用一种编辑语言来编写。,7.2 ASP.NET Web窗体,【示例】利用代码隐藏技术编写Web应用程序 本示例使用Visual Studio.NET2008演示代码隐藏技术编写Web应用程序, VS.NET 2008中的每个Web应用程序窗体包含了三个不同的窗口: (1)设计窗口:图形化的所见即所得编辑网页方式,可以用鼠标拖动调整即可完成窗体和控件的布置和可视化效果设计; (2)HTML代码窗口:在HTML代码窗口可以查看Web窗体的HTML模式下的代码,这些代码并且可以修改和编辑。在这种模式下编写HTML代码的时候,Visual Studio.NET IDE系统能提供智能提示; (3)逻辑代码窗口:逻辑代码窗口是专门用于编辑程序实现逻辑的代码的窗口,每个Web窗体都有一个对应的逻辑代码文件,有VS.NET2008自动把Web窗体的逻辑代码源引用到.aspx页面文件中。每个逻辑代码文件的名称是在对应的ASP.NET页面文件名称后再加后缀名,C语言编写的源文件加后缀名.cs。比如,新创建的应用程序中默认的Default.aspx的逻辑代码文件为Default.aspx。只需要在设计窗口中双击Web窗体界面就进入了进入Web窗体的逻辑代码编辑窗口。 下面的示例新建一个Web应用程序,创建后,系统默认进入了Default.aspx的设计窗口,如图7-2所示。,7.2 ASP.NET Web窗体,图7-2 Default.aspx的设计窗口,要将“设计窗口”切换到THML代码窗口,只需单击窗口底部的“源”按钮图标 ,即可进入了Default.aspx的HTML代码窗口,如图7-3所示。,7.2 ASP.NET Web窗体,图7-3 Default.aspx的HTML代码窗口,默认情况下的Default.aspx的所有HTML代码清单如下所示: ,7.2 ASP.NET Web窗体, 无标题页 在中,声明了Page类使用的编程语言,CodeFile=“Default.aspx.cs“指明该页面的逻辑代码保存在Default.aspx.cs文件中。,7.2 ASP.NET Web窗体,在Default.aspx的设计窗口中,对窗体界面双击,即可进入了Default.aspx的逻辑代码窗口,即:Default.aspx.cs。Default.aspx.cs是创建窗体时VS.NET2008系统自动生成的,在它的代码中包括对Default.aspx中引用控件的声明和窗体设计器自动生成的代码。在Default.aspx.cs窗口中编写代码时,系统提供了智能填充的功能,例如假设开发人员不知道使用类的具体名字而只知道类所在的命名空间,你只要敲出命名空间和“.”号,智能填充就会给出该命名空间中所有类名称,这对于初学C#语言者很有帮助,对提高编写代码的效率也很有帮助。Default.aspx.cs的窗口如图7-4所示。,图7-4 Default.aspx的逻辑代码窗口,7.2 ASP.NET Web窗体,在Default.aspx.cs中,包含了Web窗体编译时必须的一些函数和相关窗体或者控件的执行代码。没有添加功能的Default.aspx.cs文件代码清单如下: using System; using System.Configuration; using System.Data; using System.Linq; using System.Web; using System.Web.Security; using System.Web.UI; using System.Web.UI.HtmlControls; using System.Web.UI.WebControls; using System.Web.UI.WebControls.WebParts; using System.Xml.Linq; public partial class _Default : System.Web.UI.Page protected void Page_Load(object sender, EventArgs e) ,7.2 ASP.NET Web窗体,上面的代码清单分为两个部分,第一部分是可能用到的命名空间的引用,使用using声明需要使用的命名空间。第二部分是用户的事件代码部分,比如: protected void Page_Load(object sender, EventArgs e) /此处添加执行代码 代码段为Web窗体加载时的事件,可以在中间添加窗体加载时需要执行的C#代码,假设需要在这个事件过程中输出一段文字,其示例代码如下: protected void Page_Load(object sender, EventArgs e) Response.Write(“I Love China! I Love The Great Wall!“); /窗体加载时输出“I Love China! I Love The Great Wall!“字符串 然后按F5,Visual Studio.NET2008将编译整个Web应用程序,然后调用IE浏览器打开Default.aspx,同时也可以在Default.aspx的设计窗体中单击鼠标邮件,在弹出菜单中选择“在浏览器中查看”菜单选项,就可以直接在Visual Studio.NET的集成环境中查看Default.aspx编译后的运行效果,如图7-5所示,这个方法适合预览非默认启动窗体。当然,可以编译整个Web应用程序,然后在IE浏览器中直接输入地址也可以预览运行效果,也可以在配置在IIS后在客户端启动运行网页。,7.2 ASP.NET Web窗体,图7-5 当前页在浏览器中预览的快捷方式,在Web应用程序运行之前,都经过了编译阶段,不管采用的上述何种方式预览Web窗体,都是必须经过编译的。Visual Studio.NET把编译后生成的Page的基类存放于应用程序根目录下的bin文件夹中,以后每次访问Web页面时就直接调用该基类。本实例中生成的类为MyFirst.dll。我们编译后通过浏览器查看Default.aspx,结果如图7-6所示。,7.2 ASP.NET Web窗体,图7-6 Default.aspx的运行结果,对于ASP.NET的代码模式,最好的方式是采用代码隐藏技术编写的Web应用程序逻辑,这样有明细的好处,首先是传统的行内代码编辑模式标记众多,难于记忆,格式不易控制,调试不方便等缺点。其次是程序上比较明朗,一方面减少了.aspx页面的文件长度,代码容易控制,最后,Web应用程序正式发布到服务器后,逻辑代码文件经过编译生成基类文件(DLL文件)后,原有显示代码的.cs文件就可以删除掉,从而做到对源代码的保护。,7.2 ASP.NET Web窗体,7.2.2 使用ASP.NET Web窗体,当前的应用程序基本分为Web窗体和Windows窗体,ASP.NET窗体同Windows窗体类似,只是ASP.NET窗体以浏览器的Web页面的形式出现,其上面的元素如文字、图片和其他各功能控件都需要网页的支持才能显示和运行。 在默认情况下,VS.NET使用FrontPage扩展在指定位置安装Web应用程序,如果Web服务器在另一台机器上,该位置应在远程服务器上。还有另一个方法可以在LAN上使用文件系统,如果第一个方法失败,VS.NET就会试用第二个方法。 无论使用哪个方法,VS.NET都把所有项目文件在本地进行了高速缓存,并使它们与Web服务器上的文件同步。 稍后,Visual Studio .NET应建立如下内容: (1)新的解决方案WebSite1,包含C# Web 应用程序WebSite1。 (2)Web.config 应用程序的配置信息文件。 (3)Default.aspxWeb应用程序中的第一个ASP.NET页面 在本章和后面的两章中,将介绍所有生成的文件,现在则说明该应用程序的实质,即VS.NET生成的.aspx文件。,7.2 ASP.NET Web窗体,可以在设计视图或代码视图(以及设计器中的HTML视图)中查看.aspx文件。这与Windows 窗体完全相同。VS.NET中的起始视图是设计视图,在该视图上添加了一个文本标签,一个日历控件、一个文本框和一个按钮,如图7-7所示。,图7-7 Web设计视图添加控件,返回,7.3 ASP.NET控件,7.3.1 添加ASP.NET Web控件,VS.NET中使用Web窗体设计器,它支持拖放操作,且添加代码的方式与Windows窗体设计器相同。,可以添加到ASP.NET的Web页面上的控件有9种类型: (1)“标准”控件:类似Windows窗体的一组控件,有一个公共的命名模式,例如属性和其他元素的命名,便于进行开发,使用发发与Windows窗体控件保持一致。 (2)“数据”控件:提供显示数据的控件以及连接数据库的控件,使Web窗体能快速连接并显示数据库或者来源于XML 的数据源。 (3)“验证”控件:验证控件可以以一种简单的方式对用户输入执行验证。 (4)“导航”控件:用于在Web窗体上设置导航,一般由菜单、树状控件等。 (5)“登录”控件:提供登陆Web页面所需的常用元素,例如登陆名,密码和更改密码等控件。 (6)“WebParts”控件:Web Parts是控制部分页面的软件组件。 (7)“AJAX Extensions”控件:AJAX Extensions是AJAX 的核心基础,提供基本的 AJAX 应用,让开发人员不用写代码就可以产生AJAX的效果。 (8)“报表”控件:主要是水晶报表为主的报表设计控件。 (9)HTML服务器控件:这些控件模拟HTML元素,HTML开发人员会很熟悉它们。,7.3 ASP.NET控件,下面的代码示例在项目中添加两个Web服务器控件。所有的Web服务器和验证控件都以下述XML元素的方式使用: Contents 上述代码中的X是ASP.NET服务器控件的名称,attribute=value 表示一个或多个属性规范,Contents 指定控件的内容。一些控件可以使用属性和控件元素的内容来设置属性,例如用于显示简单文本Label控件,其文本可以用两种方式指定。其他控件可以使用元素包含模式来定义它们的层次结构,例如表Table可以包含TableRow元素,指定表中的行。 Web网页控件的语法是基于XML的,这些代码可以内嵌在非XML代码中,比如HTML的代码。在代码中如果省略闭合标记、空元素/,或者重叠控件,都会产生错误。其中Web服务器控件上的runat=server属性,把它放在这里和放在其他地方一样重要,如果没有这个属性可能导致窗体不能运行。 【示例】通过代码在窗体中添加标签和按钮控件 修改Default.aspx的HTML设计视图,代码如下。 ,7.3 ASP.NET控件, 无标题页 ,7.3 ASP.NET控件,上述示例代码在这里添加了两个Web窗体控件,分别为标签和按钮,其名称为默认的Label1和Button1。返回到设计视图后,其中已经添加了控件,并用它们的ID属性命名。与Windows窗体一样,可以通过Properties窗口访问所有的属性、事件等,如果进行了修改,代码或设计会立即进行反馈。 在Web窗体中添加的所有服务器控件都会自动成为对象模型的一部分,该对象模型是在这段后置代码中为窗体构建的。这种代码后置方法同Visual Studio 2008的Windows窗体程序完全一致的。 为了更加清晰控件如何工作,将上述示例的按钮代码中添加事件执行代码,让Web应用程序完成一些工作,应添加单击按钮的事件处理程序。可以在属性窗口中为按钮输入一个方法名,也可以直接双击该按钮控件,得到默认的事件处理程序。如果双击按钮,就可以自动添加一个事件处理方法,此时出现的默认代码如下: protected void Button1_Click(object sender, EventArgs e) 此时可以在Button1_Click ()事件中添加代码,使其执行功能: protected void triggerButton_Click(object sender, System.EventArgs e) Label1.Text = “Button clicked!“; ,7.3 ASP.NET控件,7.3.2 Web的标准控件,按F5键,运行结果如图7-8所示。,图7-8 单击按钮的运行结果,Web服务器标准控件基本是继承于System.Web.UI.WebControls.WebControl类,能结合代码实现大部分的Web应用程序的功能,这些Web服务器控件有许多共同的属性和事件,便于编写和使用 。,7.3 ASP.NET控件,Web窗体的常用的继承属性主要用于处理显示格式,例如属性ForeColor、BackColor、Font分别用于设定控件的前景色、背景色和字体三个属性,在Web程序开发中也可以使用CSS(Cascading Style Sheet)类来控制各种控件和界面的效果,使用CSS的时候,其存储在一个独立的文件中,把字符串属性CssClass设置为CSS类的名称。控件的其他一些属性用于设置控件的形状,比如:Width和Height,用于设置控件的宽度和高度;还有些属性用于便于用户在窗体上与控件交互,比如: AccessKey 和 TabIndex,便于用户的交互操作时的访问键和在窗体上的热点位置;另一些属性标识控件的行为类型,比如:Enabled,设置控件的功能是否可以在Web窗体上使用。每个属性有对应的属性值,通过设置属性值可以配置完成控件的大部分特性。 控件除了属性外,最常用的是其事件,比如,在窗体中最常用的是继承来的Load事件,该事件执行控件的初始化,PreRender在控件输出HTML前进行最后一次修改,可以使用的事件和属性很多。在VS 2008中的标准控件在控件工具箱中如图7-9所示:,7.3 ASP.NET控件,图7-9 常用的Web标准控件,下面表格列举了常用的Web服务器控件: 表7-1 Web服务器常用的控件,7.3 ASP.NET控件,7.3 ASP.NET控件,7.3 ASP.NET控件,7.3.3 Web验证控件,验证控件用于验证所绑定的控件的输入是否有效,验证控件(validation control)可以在不编写任何代码的情况下验证用户的输入,比如需要文本框中输入的为数字时,当输入文本后提交则会引发该验证控件的响应反应。页面和控件只要有回送,每个控件就会验证控件是否有效,并相应地改变控件的IsValid属性的值。如果这个属性值返回是false,有效性验证控件的用户输入就没有通过验证。包含所有控件的页面也有一个IsValid属性。如果页面中任一个有效性验证控件的IsValid属性设置为false,该页面的IsValid属性就是false。可以在服务器端的代码上检查这个属性,并对它进行操作。在Visual Studio IDE中的验证控件工具箱如图7-10所示:,7-10 IDE中的验证控件工具箱,7.3 ASP.NET控件,验证控件除了能够验证对应的输入是否合法,同时验证控件可以自动给用户输出有帮助的提示,只需要把ErrorMessage属性设置为所希望的文本,在用户试图回送无效的数据时,网页上的验证控件就会显示设置好的文本提示。 存储在ErrorMessage中的文本可以在验证控件所在的位置输出,也可以和页面上其他验证控件的信息一起输出在一个独立的位置。另外一种方式可以使用ValidationSummary控件来获得错误信息,并把所有的错误信息和附加文本按照需要显示出来。 在某些情况下,如果浏览器支持,验证控件还可以生成错误处理客户端的JavaScript脚本函数来简化验证任务的执行。但也有在某些情况下,验证控件是不会有回送的,因为验证控件在某些环境下禁止回送,输出不涉及服务器的错误信息。 ASP.NET的所有的验证控件都继承于BaseValidator,因此所有验证控件几乎都有相同的重要属性。其中最为常用的是ErrorMessage属性、ControlToValidate属性和Display属性,ControlToValidate属性指定要验证的控件的编程ID。Display属性确定是把文本放在验证汇总的位置上,该属性设置为none,还是放在验证控件的位置上。也可以给错误信息留一些空间,即使不显示这些错误信息,即把Display设置为Static,或者按照需要给这些信息动态分配空间,这会使页面的内容有轻微的改变,即把Display设置为Dynamic。表7-2描述了各个验证控件的简要说明。,7.3 ASP.NET控件,表7-2 验证控件表,返回,7.4 Web控件示例,本示例创建一个Web页面登记教室使用申请,申请者需要填写:姓名、课程、教室和和选择使用教室的日期。所有的输入项目使用验证控件,日历在服务器端验证,并提供一个默认日期,以防没有输入日期。对于Web用户界面进行测试,窗体上也提供了一个Label控件,使用它可以显示提交的结果。创建步骤如下: (1)在Visual Studio .NET中创建一个新的Web应用程序,使用默认的Default.aspx的Web窗体名称。 (2)向窗体中拖入如下控件,并设置各控件的属性值,控件的属性详细设置如表7-3所示。,表7-3 示例窗体控件属性表,7.4 Web控件示例,设计好的Web窗体布局如图7-11所示。,图7-11 示例程序设计视图,(3)处理日历控件的初始值。因为没有验证日历控件。需给它设置一个初始值。在页面的Page_Load()事件处理程序中设置该值: private void Page_Load(object sender, System.EventArgs e),7.4 Web控件示例, if (!this.IsPostBack) calendar.SelectedDate = System.DateTime.Now; (4)处理“提交”按钮事件 首先检查页面的IsPostBack属性,看看是否会把调用Page_Load()作为回送操作结果。如果正在进行回送,这个属性就应是true,不必改变选中的日期。添加按钮单击处理程序,只需双击该按钮,并添加如下代码: protected void BtnSubmit_Click(object sender, EventArgs e) if (this.IsValid) LbeResult.Text = “; /先将显示结果设置为空 LbeResult.Text = “你提交的结果为:“ + TxtName.Text +“,“+ TxtClass.Text +LstCourse.Text + CldDate.SelectedDate.ToLongDateString(); ,7.4 Web控件示例,把resultLabel控件的Text属性设置为结果字符串,显示在主表格的下方。在IE中,这个提交结果应如图7-12所示。,图7-12 示例运行结果图,返回,7.5 ASP.NET绑定数据,在ASP.NET的Web网页中可以使用ADO.NET访问存储在数据库中的数据,这样就可以存储和检索数据。 这里用到Microsoft SQL 2000自带的Northwind 数据库。 通过示例调用Northwind 数据库中的Products表中的数据将产品信息放在网页上供查询,用户进入指定的网页,通过在检索关键字文本框中输入“产品的名称”查看该产品的详细信息,单击“开始查询”按钮即可查看自己搜索的结果。示例步骤如下: 1建立C#系统网站 (1)打开 Visual Studio 2008。 (2)在“文件”菜单上单击“新建网站”。 (3)出现“新建网站”对话框。 (4)在“Visual Studio 已安装的模板”之下单击“ASP.NET 网站”。 (5)在“位置”框中选择“文件系统”,然后输入要保存网站网页的文件夹的名称。 例如,键入文件夹名“C:工资查询”。 (6)在“语言”列表中单击Visual C#”。 (7)单击“确定”按钮。Visual Studio 2008创建该文件夹和一个名为 Default.aspx 的新页。 2向页面中添加文本 (1)单击文档窗口底部的“设计”选项卡切换到“设计”视图。 “设计”视图以类似“所见即所得”的方式显示所处理的页。此时,页上没有任何文本或控件,因此页是空白的。,7.5 ASP.NET绑定数据,(2)将插入指针放置在已位于页面上的 div 元素中。 (3)键入文本“产品查询系统”。 3将控
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 厂矿消防知识培训
- 云南省峨山彝族自治县高中生物 第五章 细胞的能量供应和利用 5.4.2 影响光合作用因素教学设计 新人教版必修1
- 隔物灸产品培训
- 多媒体信息技术与教学融合的培训成果
- 一年级语文上册 第一单元 1 天地人配套教学设计 新人教版
- 九年级化学下册:第10单元 课题1 常见的酸和碱教学设计
- 人教部编版七年级历史上册 第12课《汉武帝巩固大一统王朝》教学设计
- 安全教育培训总结
- 药理学练习试题及答案
- 2024分析技术考试-环保检测练习卷附答案
- 广西壮族自治区马山县实验高中-双休背后:从“要我学”到“我要学”的转变-高三家长会【课件】
- 2024年中小学教师资格考试复习资料
- 名企2025汇能控股集团有限公司人才招聘151人笔试参考题库附带答案详解
- 全媒体内容创作技能试题及答案
- 蛋鸡155标准化立体养殖模式
- 血氨正常值和临床意义
- 浙江省湖州市德清县2025年中考语文模拟考试试卷(附答案)
- 2025年无锡南洋职业技术学院单招职业技能测试题库带答案
- T-SSFSIDC 021-2024 认股权综合服务工作准则
- 2024年广东省中考数学试卷(附答案)
- 2025年江西省旅游集团股份有限公司招聘笔试参考题库含答案解析
评论
0/150
提交评论