1 章第ASP.NET 开发入门 ( 视频讲解:1 小时 49 分钟) 从这里开始 ASP.NET 技术学习之旅.ASP.NET 技术是 Microsoft Web 开发史 上的一个重要的里程碑,使用 ASP.NET 开发 Web 应用程序并维持其运行比以前变 得更加简单.通过本章的学习,读者会对 ASP.NET 有进一步的认识,学会安装、 搭建和熟悉 ASP.NET 环境,并了解一些网页相关的基本知识,同时也将利用 ASP.NET 的帮助系统更加深入地学习 ASP.NET.本书将着重介绍 ASP.NET 3.5. ASP.NET 从入门到精通(第2版) 1.1 ASP.NET 简介 ASP.NET 是Microsoft 公司推出的新一代建立动态 Web 应用程序的开发平台,是一种建立动态 Web 应用程序的新技术. 它是.NET 框架的一部分, 可以使用任何.NET 兼容的语言 (如Visual Basic.NET、 C#和JScript .NET)编写 ASP.NET 应用程序.当建立 Web 页面时,可以使用 ASP.NET 服务器端控件 来建立常用的 UI(用户界面)元素,并对它们编程来完成一般的任务,可以把程序开发人员的工作效 率提升到其他技术都无法比拟的程度. 1.1.1 ASP.NET 发展历程 2000 年ASP.NET 1.0 正式发布,2003 年ASP.NET 升级为 1.1 版本.ASP.NET 1.1 的发布更加激发 了Web 应用程序开发人员对 ASP.NET 的兴趣,并对网络技术有巨大的推动作用,微软公司提出"减少70%代码"的目标后,在2005 年11 月又发布了 ASP.NET 2.0.ASP.NET 2.0 的发布是.NET 技术走 向成熟的标志,它在使用上增加了方便、实用的新特性,使Web 开发人员能够更加快捷方便地开发 Web 应用程序,它不但执行效率大幅度提高,对代码的控制也做得更好,以高安全性、易管理性和高 扩展性等特点著称.随后,微软推出 3.5 版本,使网络程序开发更倾向于智能开发,运行起来更像 Windows 下的应用程序一样流畅. 本书是在 ASP. NET 3.5 环境下介绍相关技术的. 1.1.2 ASP.NET 优势 ASP.NET 是目前主流网络开发技术之一,它本身具有许多优点和新特性,具体介绍如下. ; 高效的运行性能 由于 ASP.NET 应用程序采用页面脱离代码技术,即前台页面代码保存到 aspx 文件中,后台代码 保存到 CS 文件中,这样当编译程序将代码编译为 dll 文件后,ASP.NET 在服务器上运行时,可以直接 运行编译好的 DLL 文件,并且 ASP.NET 采用缓存机制,可以提高运行 ASP.NET 的性能. ; 简易性、灵活性 很多 ASP.NET 功能都可以扩展, 这样可以轻松地将自定义功能集成到应用程序中. 例如, ASP.NET 提供程序模型为不同数据源提供插入支持. ; 可管理性 ASP.NET 中包含的新增功能使得管理宿主环境变得更加简单,从而为宿主主体创建了更多增值的 机会. 4 第1章ASP.NET 开发入门 ; 生产效率 使用新增的 ASP.NET 服务器控件和包含新增功能的现有控件,可以轻松、快捷地创建 ASP.NET 网页和应用程序.新增内容(如成员资格、个性化和主题)可以提供系统级的功能,此类功能通常可 能会要求开发人员进行大量的编写代码工作.新增数据控件、无代码绑定和智能数据显示控件已经解 决了核心开发方案(尤指数据)问题. 1.1.3 .NET Framework .NET Framework 是微软公司推出的完全面向对象的软件开发与运行平台,它具有两个主要组件, 分别是公共语言运行库(Common Language Runtime,CLR)和.NET Framework 类库. 公共语言运行库是.NET Framework 的基础,它为多种语言提供了一种统一的运行环境.可以将运 行库看作一个在执行时管理代码的代理,代码管理的概念是运行库的基本原则.以运行库为目标的代 码称为托管代码,而不以运行库为目标的代码称为非托管代码. .NET Framework 的另一个主要组件是类库,可以使用它开发多种应用程序,这些应用程序包括传 统的命令行或图形用户界面 (GUI) 应用程序, 也包括基于 ASP.NET 所提供的最新创建的应用程序 (如Web 窗体和 XML Web Services). 1.1.4 ASP.NET 的运行原理 当一个 HTTP 向服务器请求并被 IIS 接收后,首先,IIS 检查客户端请求的页面类型,并为其加载 相应的 dll 文件,然后,在处理过程中将这条请求发送给能够处理这个请求的模块.在ASP.NET 中, 这个模块叫做 HttpHandler(HTTP 处理程序组件),之所以 aspx 文件可以被服务器处理,就是因为在 服务器端有默认的 HttpHandler 专门处理 aspx 文件. IIS 将这条请求发送给能够处理这个请求的模块之前,还需要经过一些 HttpModule 的处理,这些 都是系统默认的 Modules(用于获取当前应用程序的模块集合).HTTP 请求传到 HttpHandler 之前要 经过不同的 HttpModuls 处理有 4 个好处,一是为了一些必需的过程;二是为了安全性;三是为了提高 效率;四是为了用户能够在更多的环节上进行控制,增强了用户的控制能力.ASP.NET 运行原理如 图1.1 所示. dll 图1.1 ASP.NET 运行原理 5 ASP.NET 从入门到精通(第2版) HttpModule 模块是一个组件,可以注册为 ASP.NET 请求生命周期的一部分,当处理该组件时, 该组件可以读取或更改请求或响应.HttpModule 模块通常用于执行需要监视每个请求的特殊任务, 如安全或站点统计信息. 1.1.5 ASP.NET 的运行机制 ASP.NET 的运行机制如图 1.2 所示. 图1.2 ASP.NET 的运行机制 从图 1.2 中可以清楚地看到一个 HTTP 请求是如何经过服务器处理的,同时通过该图也可以看出 Request 掌管着所有客户端的输入.图中展示了一个 HTTP 请求有可能经过的 4 条路线. ; 第1条线路说明(1、2、3、4、5、6) 当用户第一次访问这个页面时,这个请求首先经过 HttpModuls 和HttpHandler(HTTP 处理程序组 件)的处理,而在 HttpHandler 的处理中,服务器会为用户转到其真正要访问的页面,然后通过 ASP Engine 来找到这个页面背后的类,并实例化为一个临时对象,在此过程中会触发一系列的事件,其中 一部分的事件需要经过对象中的方法处理,之后服务器会将这个处理后的页面移交给 Response 对象, 最后由 Response 对象将这个页面发送到客户端,这就是第 1 条路线. ; 第2条线路说明(7、8、9) 当用户在这个页面上重新提交一些信息,并继续向服务器发送请求时,因为用户与服务器之间的 会话已经建立,同时对应的临时对象也在服务器中建立,所以不用再经过初始化页面的工作,故第 2 条路线是按照 HttpModuls、HttpHandler 直接与临时对象交互然后返回的. ; 第3条线路说明(10、11、12、13) 第3条路线与第 2 条不同的是在处理请求时如果涉及需要调用 ASP Cache(即ASP 缓存),临时 对象将直接从 ASP 缓存提取信息并返回. 6 第1章ASP.NET 开发入门 ; 第4条线路说明(14、15) 第4条路线就是当用户刷新这个页面时,服务器接收到 HTTP 请求,发现这个请求先前已经处理 过,并将处理结果存储到由一个默认的 HttpModule 管理的输出缓存中,那么用户就可以直接从这个缓 存提取信息并返回,而无须再重新处理一遍. 1.2 ASP.NET 开发环境搭建 1.2.1 安装 IIS ASP.NET 作为一项服务,首先需要在运行它的服务器上建立 Internet 信息服务器(IIS).IIS 是Internet Information Server 的缩写,是微软公司主推的 Web 服务器,通过 IIS 开发人员可以更方便地调 试程序或发布网站. 下面列出 Windows 操作系统不同版本下集成的 IIS 服务器. ; Windows 2000 Server:Professional IIS 5.0. ; Windows XP:Professional IIS 5.1. ; Windows 2003:IIS 6.0. ; Windows Vista:IIS 7.0. IIS 的安装非常简单,下面以 IIS 6.0 为例介绍安装步骤. (1)将Windows 操作系统安装盘放入计算机的光盘驱动器中,单击"开始"菜单,选择"设置"/ "控制面板"/"添加或删除程序"命令,此时系统会弹出"添加或删除程序"对话框,如图 1.3 所示. (2)单击"添加或删除程序"对话框左侧的"添加/删除 Windows 组件"图标,将打开"Windows 组件向导"对话框,如图 1.4 所示. 图1.3 "添加或删除程序"对话框 图1.4 "Windows 组件向导"对话框 7 ASP.NET 从入门到精通(第2版) (3)将"Windows 组件向导"对话框中的"应用程序服务器"复选框选中,并单击【详细信息】 按钮,进入"应用程序服务器"对话框,如图 1.5 所示. (4)将"应用程序服务器"对话框中的"Internet 信息服务(IIS)"复选框选中,单击【详细信 息】按钮查看"Internet 信息服务(IIS)"所需要安装的组件,如图 1.6 所示. (5)连续两次单击【确定】按钮,再单击【下一步】按钮,开始安装 Internet 信息服务(IIS), 如图 1.7 所示. (6)单击【完成】按钮,完成 Internet 信息服务(IIS)的安装. (7)Internet 信息服务(IIS)安装完成后,单击"开始"菜单,选择"程序"/"管理工具"/"服务"命令,在打开的"服务"窗口中选中名称为 IIS Admin Service 的服务,双击启动 IIS Admin Service 服务,如图 1.8 所示. 图1.5 "应用程序服务器"对话框 图1.6 "Internet 信息服务(IIS)"对话框 图1.7 "正在配置组件"对话框 图1.8 "服务"窗口 以上为 Internet 信息服务(IIS)的完整安装步骤,用户按照步骤安装 Internet 信息服务(IIS)后即 可使用. 8 第1章ASP.NET 开发入门 1.2.2 配置 IIS IIS 安装并启动后就要对其进行必要的配置,这样才能使服务器在最优的环境下运行,下面介绍配 置IIS 6.0 服务器的具体步骤. (1)单击"开始"菜单,再依次选择"设置"/"控制面板"/"管理工具"/"Internet 信息服务(IIS) 管理器"命令,弹出"Internet 信息服务(IIS)管理器"窗口,如图 1.9 所示. (2)在左侧的"Internet 信息服务"列表中依次展开"本地计算机"/"网站"节点,右键单击"默 认网站"子节点,在弹出的快捷菜单中选择"属性"命令,打开"默认网站 属性"对话框. (3)选择"网站"选项卡,在此选项卡中可以设置网站标识、连接和日志记录.在"IP 地址"下 拉列表框中,默认选项为"(全部未分配)",用户可以使用此默认选项,也可以选择下拉列表框中 本机的 IP 地址;"TCP 端口"文本框中的默认值为 80,建议不要修改此参数;用户还可以设置站点的 超时时间,默认为 120 秒,如图 1.10 所示. 图1.9 "Internet 信息服务(IIS)管理器"窗口 图1.10 "网站"选项卡 (4)选择"主目录"选项卡,在该选项卡中设置连接到 Web 站点的内容来源,默认为"此计算 机上的目录";默认的 Web 站点存放文件的路径为"C:\inetpub\wwwroot",建立的 Web 文件都会放 置在此目录下;另外,对此目录的默认权限只有"读取"、"记录访问"和"索引资源"3 项,如果没 有特殊要求,此选项卡中的内容不需要改动,如图 1.11 所示. 如果网站在调试过程中出现执行权限的问题,可以尝试在"主目录"选项卡的"执行权限"下 拉列表框中选择"脚本和可执行文件"选项. (5)选择"文档"选项卡,选中"启用默认内容文档"复选框,这样当运行 Web 程序后,不需 要在地址栏中填写此文件名,系统会自动读取默认文档中的内容.例如,在IE 地址栏中输入 "http://localhost:1367/LeadPro",Web 程序会自动寻找此路径下的 Default.aspx 文件,用户可通过【添9ASP.NET 从入门到精通(第2版) 加】或【删除】按钮添加或删除默认文档,如图 1.12 所示. 图1.11 "主目录"选项卡 图1.12 "文档"选项卡 (6)单击【确定】按钮,完成 IIS 的配置. 1.2.3 安装 Visual Studio 2008 "工欲善其事,必先利其器".ASP.NET 是Visual Studio 集成开发环境的一部分,现在的专业开 发人员一般都会通过安装 Visual Studio 2008 集成环境开发 ASP.NET 应用程序. 使用 Visual Studio 2008 可以开发 ASP.NET 2.0、ASP.NET 3.0 和ASP.NET 3.5 Web 应用程序. 1.系统要求 (1)操作系统 ; Windows 2000 Service Pack 4. ; Windows Server 2003 Service Pack 1.0. ; Windows XP Service Pack 2.0. ; Windows Vista. (2)硬件 ; CPU:至少 600 MHz(推荐使用 1GHz). ; 内存:至少 128MB(推荐使用 512MB). (3)磁盘 ; 全部安装(包括帮助文档,即MSDN),安装盘上至少需要 3.8GB 磁盘空间,系统盘至少剩 余1GB 磁盘空间. ; 不含 MSDN 的安装,安装盘上至少需要 2GB 磁盘空间,系统盘上至少剩余 1GB 磁盘空间. 10 第1章ASP.NET 开发入门 (4)显示器 至少 800*600 像素,256 色(建议用 1024*768 像素,增强色为 16 位). 安装 Visual Studio 2005 之前,系统必须先安装 Internet 信息服务(IIS)5.0 或更高版本. 在不同版本的 Windows 系统下(除了 Windows Vista)安装 Visual Studio 2008 前,需要安装相 应的 Windows 操作系统补丁. 也就是说, 必须安装相应的系统补丁, 才能正常安装 Visual Studio 2008 开发环境. 2.安装步骤 (1) 将Visual Studio 2008 安装盘放入计算机的光盘驱动器中, 光盘运行后会自动进入安装程序界 面,如图 1.13 所示.该界面中共有 3 个安装选项供用户选择,单击"安装 Visual Studio 2008"超链接, 开始安装 Visual Studio 2008 集成开发环境. (2)在打开的 Microsoft Visual Studio 2008 安装向导窗口中,安装程序会自动加载安装组件,如图1.14 所示. 单击此处开始安装 Visual Studio 2008 图1.13 Visual Studio 2008 安装程序界面 图1.14 安装程序加载安装组件 (3)加载安装组件完成后,在该窗口中单击【下一步】按钮进行安装,如图 1.15 所示. 图1.15 加载安装组件完成 11 ASP.NET 从入门到精通(第2版) (4)安装程序会跳转到"Microsoft Visual Studio 2008 安装程序-起始页"窗口.该窗口左侧显示 关于 Visual Studio 2008 安装程序所需的组件信息,右侧显示用户许可协议.选中"我已阅读并接受许 可条款"单选按钮,单击【下一步】按钮,如图 1.16 所示. 选中 "我已阅读并接受许可条款" 单选按钮,单击【下一步】按钮 图1.16 接受许可条款 (5)安装程序会跳转到"Microsoft Visual Studio 2008 安装程序-选项页"窗口.用户可根据需要 选择安装的功能,并对产品安装路径进行设置.这里选择"自定义"安装,并通过单击【浏览】按钮 确定安装路径,如图 1.17 所示. (6)单击【下一步】按钮,在打开的窗口中通过各功能前的复选框来确定是否安装此功能,即选 中复选框表示安装功能,未选中复选框表示不安装功能,如图 1.18 所示. 这里选择要安装的类型 单击【浏览】按钮, 重新设置安装路径 图1.17 "Microsoft Visual Studio 2008 安装程序-选项页"窗口 图1.18 选择要安装的功能 如果在步骤(5)中选择的是"完全"安装类型,则安装程序将直接自动安装所提供的所有功能. 12 第1章ASP.NET 开发入门 (7)选择安装功能后,单击【安装】按钮,安装程序会跳转到"Microsoft Visual Studio 2008 安装 程序-安装页"窗口,开始安装组件,如图 1.19 和图 1.20 所示. 图1.19 开始安装组件 图1.20 正在安装组件 (8)组件安装完成后,单击【下一步】按钮,进入"Visual Studio 2008 安装程序-完成页"窗口. 单击【完成】按钮,完成 Visual Studio 2008 开发环境的安装,如图 1.21 所示. 安装 Visual Studio 2008 之前需要安装 IIS.如果先安装 Visual Studio 2008 再安装 IIS,则可以 使用 Aspnet_regiis 命令将.NET 框架注册到 IIS 服务器中,如图 1.22 所示. 图1.21 安装完成 图1.22 注册.NET 框架到 IIS 服务器 1.2.4 配置 Visual Studio 2008 开发环境 为了更加方便地在 Visual Studio 2008 中开发 Web 应用程序,需要配置 Visual Studio 2008 开发环 境,具体操作步骤如下: (1) 单击 "开始" 菜单, 选择 "所有程序" /Microsoft Visual Studio 2008/Microsoft Visual Studio 2008 命令,启动 Microsoft Visual Studio 2008. 13 ASP.NET 从入门到精通(第2版) (2)第1次打开 Microsoft Visual Studio 2008 时,会弹出"选择默认环境设置"对话框,这里需 要选择"Web 开发设置"选项,然后单击【启动 Visual Studio】按钮打开集成开发环境,如图 1.23 和图1.24 所示. 图1.23 选择默认环境 图1.24 启动 Microsoft Visual Studio 2008 如果要更改"选择默认环境设置"对话框中的设置,则在 Visual Studio 2008 环境中选择"工具"/ "导入和导出设置"命令,按照提示进行操作即可. (3)在"工具"菜单中选择"选项"命令,弹出"选项"对话框,在该对话框的左侧导航栏中有"常规"、"环境 字体和颜色"、"文本编辑器 HTML"和"HTML 设计器"选项,如图 1.25 所示. 在 "选项" 对话框默认页中, 可以选择 Visual Studio 2008 起始页位置和源视图中显示的项目 (如 自动列出成员、行号、自动换行)等. (4)在"选项"对话框的下方,选中"显示所有设置"复选框,在左栏中将显示所有命令,如图1.26 所示.读者可以根据实际需要进行详细设置. 图1.25 "选项"对话框 图1.26 显示所有设置 14 第1章ASP.NET 开发入门 1.3 ASP.NET 网页语法 1.3.1 ASP.NET 网页扩展名 网站应用程序中可以包含很多文件类型.例如,在ASP.NET 中经常使用的 ASP.NET Web 窗体页 就是以.aspx 为扩展名的文件.ASP.NET 网页其他扩展名的具体描述如表 1.1 所示. 表1.1 ASP.NET 网页扩展名 文件扩展名Web 用户控件 .ascx HTML 页.htm XML 页.xml 母版页 .master Web 服务 .asmx 全局应用程序类 .asax Web 配置文件 .config 网站地图 .sitemap 外观文件 .skin 样式表 .css 1.3.2 页面指令 ASP.NET 页面中的前几行一般是<%@…%>这样的代码,这叫做页面的指令,用来定义 ASP.NET 页分析器和编译器使用的特定于该页的一些定义.在.aspx 文件中使用的页面指令一般有以下几种. 1.<%@Page%> <%@Page%>指令可定义 ASP.NET 页分析器和编译器使用的属性, 一个页面只能有一个这样的指令. 2.<%@Import Namespace="Value"%> <%@Import Namespace="Value"%>指令可将命名空间导入到 ASP.NET 应用程序文件中, 一个指令 只能导入一个命名空间,如果要导入多个命名空间,应使用多个@Import 指令来执行.有的命名空间 是ASP.NET 默认导入的,没有必要再重复导入. ASP.NET 3.5 默认导入的命名空间包括 System、 System.Configuration、 System.Data、 System.Linq、 System.Web、System.Web.Security、System.Web.UI、System.Web.UI.HtmlControls、System.Web.UI. WebControls、System.Web.UI.WebControls.WebParts、System.Xml.Linq. 15 ASP.NET 从入门到精通(第2版) 16 3.<%@OutputCache%> <%@OutputCache%>指令可设置页或页中包含的用户控件的输出缓存策略. 4.<%@Implements Interface="接口名称"%> <%@Implements Interface="接口名称"%>指令用来定义要在页或用户控件中实现的接口. 5.<%@Register%> <%@Register%>指令用于创建标记前缀和自定义控件之间的关联关系,有下面 3 种写法: <%@ Register tagprefix="tagprefix" namespace="namespace" assembly="assembly" %> <%@ Register tagprefix="tagprefix" namespace="namespace" %> <%@ Register tagprefix="tagprefix" tagname="tagname" src="pathname" %> ; tagprefix:提供对包含指令的文件中所使用的标记的命名空间的短引用的别名. ; namespace:正在注册的自定义控件的命名空间. ; tagname:与类关联的任意别名.此属性只用于用户控件. ; src:与tagprefix:tagname 对关联的声明性用户控件文件的位置,可以是相对的地址,也可以 是绝对的地址. ; assembly:与tagprefix 属性关联的命名空间的程序集,程序集名称不包括文件扩展名.如果 将自定义控件的源代码文件放置在应用程序的 App_Code 文件夹下, ASP.NET 2.0 在运行时会 动态编译源文件,因此不必使用 assembly 属性. 1.3.3 ASPX 文件内容注释 服务器端注释(<%--注释内容--%>)允许开发人员在 ASP.NET 应用程序文件的任何部分(除了 第1章ASP.NET 开发入门 服务器端注释用于页面的主体, 但不在服务器端代码块中使用. 当在代码声明块 (包含在标记中的代码)或代码呈现块(包含在<%%>标记中的代码)中使用特定语 言时,应使用用于编码的语言的注释语法.如果在<% %>块中使用服务器端注释块,则会出现编译 错误.开始和结束注释标记可以出现在同一行代码中,也可以由许多被注释掉的行隔开.服务器端 注释块不能被嵌套. 1.3.4 服务器端文件包含 服务器端文件包含用于将指定文件的内容插入 ASP.NET 文件中, 这些文件包括网页 (.aspx 文件) 、 用户控件文件(.ascx 文件)和Global.asax 文件.包含文件是在编译之前被包含的文件按原始格式插入 到原始位置,相当于两个文件组合为一个文件,两个文件的内容必须符合.aspx 文件的要求. 语法: ; file:文件名是相对于包含带有#include 指令的文件目录的物理路径,此路径可以是相对的. ; virtual:文件名是网站中虚拟目录的虚拟路径,此路径可以是相对的. 使用 file 属性时包含的文件可以位于同一目录或子目录中,但该文件不能位于带有#include 指 令的文件的上级目录中.由于文件的物理路径可能会更改,因此建议采用 virtual 属性. 例如,使用服务器端包含指令语法调用将在 ASP.NET 页上创建页眉的文件,这里使用的是相对路 径,代码如下: