asp 测试是否为手机 只有12306首页可以打开开 其他的空白

拒绝访问 | www.wangchao.net.cn | 百度云加速
请打开cookies.
此网站 (www.wangchao.net.cn) 的管理员禁止了您的访问。原因是您的访问包含了非浏览器特征(40a8c7fbb1604d14-ua98).
重新安装浏览器,或使用别的浏览器asp网站首页可以打开,其它页面都打不开是什么原因?_百度知道
asp网站首页可以打开,其它页面都打不开是什么原因?
我有更好的答案
有什么提示或现象?
首页打开很慢,其它页面打开一直提示等待响应
可能存在着查询死循环--&相关参数缺失所致
嗯,我也这么想
但是怎么检查呢
排除法:先备份首页文件,然后再清除所有文件,再以备份中自上至下一行一行代码加载,看从什么地方开始加载困难变慢的
嗯,我已经找到原原因了
采纳率:72%
来自团队:
程序出问题了
程序是之前备份的,应该没有问题
在本地测试一下或者重新配置下服务器环境
关键asp程序我没有测试包
你看是是否未启用父路径。默认情况IIS的父路径是被关闭的!
为您推荐:
其他类似问题
换一换
回答问题,赢新手礼包
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。asp整站本地测试正常,上传到空间后打开空白!!!!!!!_百度知道
asp整站本地测试正常,上传到空间后打开空白!!!!!!!
sp整站,本次测试是完全正常的,居然打开就空白了,后台地址输入进去也是空白,上传到一个朋友的空间也是正常的,后来上传到另一个服务器
我有更好的答案
首先要搞清楚你的空间是否支持ASP。一般而言,Unix或Linux系统的服务器默认是不支持ASP的(必须另外安装插件),它支持的是PHP。新版的Windows系统服务器也是默认只支持ASP.NET的,要经过专门设置才支持ASP。
这个空间有另外一个asp整站,完全正常。
那就要从代码上找原因了。
代码上有问题的话为何本地又正常呢。
服务器环境不可能完全一样的,比如说代码在根目录运行正常的,放到子目录却可能不正常,这样的情况多了。
为您推荐:
其他类似问题
整站的相关知识
换一换
回答问题,赢新手礼包
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。我做的网站在本地测试用localhost测试正常,但输入ip就打不开,怎么办?_百度知道
我做的网站在本地测试用localhost测试正常,但输入ip就打不开,怎么办?
我用的织梦后台,php和mysql环境,环境应该没错吧?我们公司好像用的是路由器外网,每台电脑上都插有无线网卡,和这有关系吗?
我有更好的答案
都没说到点子上啊。本机测试正常,可以排除环境因素。 那么排查这几个方面。1,局域网的环境是否正常。可以ping网关,或者其它机器ping你的IP。
如果是自己电脑上用本机的局域网IP的话忽略上面。2,开户GUEST帐户。3,关闭防火墙(重要!)。
采纳率:41%
输入对应的内网地址打不开? 应该是IIS/ APACHE配置的问题吧。要想输入外网IP访问要在路由上做映射。
用了路由器当然打不开了,你可以进入路由器把你的电脑设置成DMZ主机,把你的电脑映射到外网。不然只能用本机使用。
为您推荐:
其他类似问题
您可能关注的内容
localhost的相关知识
换一换
回答问题,赢新手礼包
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。目第一章录ASP.NET 概述 .............................................................................................. 1任务 1.1 WEB 应用程序概述 ........................................................................... 1 1.1.1 Web 应用程序的体系结构.................................................................. 1 1.1.2 Web 应用程序的开发技术.................................................................. 1 任务 1.2 认识 ASP.NET .................................................................................... 1 1.2.1 ASP.NET 的优势 .............................................................................. 2 1.2.2 ASP.NET 的关键技术 ...................................................................... 2 1.2.3 ASP.NET 应用程序文件 .................................................................. 3 任务 1.3 搭建 asp.net 集成开发环境 ............................................................... 4 1.3.1 安装和配置 IIS ................................................................................... 4 1.3.2 安装 Visual Studio 2010 ..................................................................... 4 任务 1.4 创建第一个 ASP.NET 程序 ................................................................. 9 第二章 ASP.NET 内置对象 ................................................................................ 15任务 2.1 使用 Response 对象实现用户登录功能 ......................................... 15 2.1.1 Response 对象................................................................................. 15 2.1.2 任务 2.2 用户登录功能实现 ......................................................................... 17 使用 Request 对象实现数据传递................................................ 192.2.1 Request 对象 ................................................................................... 19 2.2.2. 跨页数据传递 ................................................................................ 21任务 2.3 使用 Cookie 对象记录用户访问网站的时间和次数 ..................... 23 2.3.1 Cookie 对象..................................................................................... 23 2.3.2 记录用户访问网站的时间和次数程序的实现 ............................. 24任务 2.4 使用 Application 对象统计网站在线人数和访问网站的总人数 . 27 2.4.1 Application 对象............................................................................. 27 2.4.2 任务 2.5 统计网站在线人数和访问该网站的总人数程序的实现 ............. 29 Session 对象在任务 2.4 中的运用 ............................................... 312.5.1 Session 对象 .................................................................................... 321 2.5.2 第三章修改 Session 对象的默认生命周期 ............................................... 33ASP.NET WEB 窗体和服务器控件 .......................................................... 34任务 3.1 web 窗体和服务器控件概述............................................................... 34 3.1.1 WEB 窗体 ....................................................................................... 34 3.1.2 WEB 服务器控件共有属性 ........................................................... 34 任务 3.2 文本服务器控件 ................................................................................. 35 3.2.1 Label 控件 .......................................................................................... 35 3.2.2 Lite ral 控件 ........................................................................................ 36 3.2.3 TextBox 控件...................................................................................... 36 3.2.4 Hype rLink 控件 ............................................................................. 37 任务 3.3 按钮服务器控件 ............................................................................... 38 3.3.1 Button 控件 ..................................................................................... 38 3.3.2 Button 按钮的使用......................................................................... 39 3.3.3 制作登录页面 ................................................................................. 403.3.4 ImageButton 控件 ............................................................................. 41 任务 3.4 图像服务器控件 ............................................................................... 41 3.4.1 Image 控件 ...................................................................................... 42 3.4.2 图片浏览页面.................................................................................... 42 3.4.4 制作站点地图页面 ........................................................................... 45 任务 3.5 选择服务器控件 ................................................................................. 47 3.5.1 CheckBox 控件 ............................................................................... 47 3.5.2 CheckBoxList 控件 ........................................................................ 48 3.5.3 RaidoButton 控件........................................................................... 49 3.5.4 RadioButtonList 控件 .................................................................... 50 3.5.5 获取用户的个人爱好 ....................................................................... 50 任务 3.6 列表服务器控件 ................................................................................. 53 3.6.1 ListBox 控件 ................................................................................... 532 3.6.2两个列表框级联 ............................................................................. 543.6.3 DropDownList 控件 ....................................................................... 57 3.6.4 BulletedList 控件............................................................................ 58 任务 3.7 容器服务器控件 ............................................................................... 59 3.7.1 Panel 控件 .......................................................................................... 59 3.7.2 Panel 控件的应用 .............................................................................. 60 任务 3.8 增强控件.............................................................................................. 62 3.8.1 AdRotator 控件 ................................................................................. 62 3.8.2 Calendar 控件.................................................................................... 66 3.8.3 数字日历............................................................................................ 66 3.8.4 带节日的日历控件 ........................................................................... 69 3.8.4 Table 控件 ....................................................................................... 74 3.8.5 FileUpload 控件.............................................................................. 76 3.8.6 上传文件信息.................................................................................... 76 第四章 ASP.NET 页面验证技术 ............................................................................ 79任务 4.1 RequiredFieldValidator 控件的使用 ................................................. 79 4.1.1 RequiredFieldValidator 控件 ........................................................ 79 4.1.2 必须字段验证控件的使用 ............................................................. 80任务 4.2 RegularExpressionValiator 控件的使用 ........................................ 81 4.2.1 ReguarExpressionValidator 控件的基本属性 ............................. 81 4.2.2 正则表达式验证控件的使用 ........................................................... 83 任务 4.3 RangeValidator 控件的使用 ........................................................... 85 4.3.1 RangeValidator 控件的基本属性 ................................................. 85 4.3.2 输入年龄范围的验证 ..................................................................... 86任务 4.4 CompareValidator 控件................................................................... 86 4.4.1 CompareValidator 控件的基本属性 ............................................ 86 4.4.2 CompareValidator 控件的使用 .................................................... 883 4.4.3学生信息验证 ................................................................................. 89任务 4.5 CustomValidator 控件和 ValdationSummary 控件...................... 91 4.5.1 CustomValidator 控件的基本属性 ............................................... 91 4.5.2 ValidationSummary 控件 .............................................................. 914.5.3 验证预购车票日期 ......................................................................... 92 4.5.4 系统用户注册页面验证 ................................................................. 94 第五章 ADO.NET 与数据绑定技术 ................................................................ 100任务 5.1 ADO.NET 概述 .............................................................................. 100 5.1.1 ADO.NET 简介 ............................................................................ 100 5.1.2 创建“学生管理系统(StudentMS) ...................................... 101 ”任务 5.2 ADO.NET 对象 .............................................................................. 103 5.2.1 Connection 对象及其运用 ........................................................... 103 5.2.2 Command 对象及其运用 ............................................................ 105 5.2.3 DataReader 对象及其运用 .......................................................... 109 5.2.4 DataAdapter 对象及其运用 ........................................................ 112 5.2.5 DataSet 对象及其运用 ................................................................. 113 5.2.6 DataTable 对象 ............................................................................. 117 5.2.7 DataVie w 对象及其运用.............................................................. 119 任务 5.3 常见的数据库操作 ......................................................................... 122 5.3.1 5.3.2 5.3.3 5.3.4 5.3.5 5.3.6 创建数据库连接 ........................................................................... 122 读取数据库记录 ........................................................................... 123 添加数据库记录 ........................................................................... 123 更新数据库记录 ........................................................................... 129 删除数据库记录 ........................................................................... 138 调用存储过程 ............................................................................... 140任务 5.4 常用控件的数据绑定 ..................................................................... 143 5.4.1 DropDownList 控件的数据绑定 ................................................. 1434 5.4.2 ListBox 控件的数据绑定 ............................................................. 144 5.4.3 RadioButtonList 控件的数据绑定 .............................................. 146 任务 5.5 数据服务器控件 ............................................................................. 148 5.5.1 Repeater 控件及其运用 ............................................................... 149 5.5.2 DataList 控件及其运用................................................................ 153 5.5.3 DataGrid 控件及其运用 .............................................................. 158 5.5.4 GridVie w 控件及其运用.............................................................. 162 第六章 .NET WEB 服务 ..................................................................................... 166任务 6.1 一个简单的 Web 服务实例........................................................... 166 任务 6.2 一个返回 DataSet 对象的电话区号查询 Web 服务实例 ............ 172 任务 6.3 使用 Web 服务查询发布天气预报................................................ 180 第七章 Ajax 技术 ................................................................................................ 186任务 7.1 一个简单的 Ajax 应用程序 .......................................................... 186 任务 7.2 使用 XMLHttpRequest 对象与服务器进行通信。 .................. 188 任务 7.3 AJAX Suggest 实例........................................................................ 192 任务 7.4 AJAX 数据库实例 .......................................................................... 197 任务 7.5 AJAX XML 实例............................................................................ 201 任务 7.6 AJAX Response XML 实例 ....................................................... 204 物流信息管理平台 ................................................................................................... 217 8.1 开发背景..................................................................................................... 217 8.2 需求分析..................................................................................................... 218 8.3 系统设计..................................................................................................... 218 8.3.1 系统目标.......................................................................................... 218 8.3.2 系统业务流程图............................................................................. 218 8.3.3 系统功能结构................................................................................. 219 8.3.4 系统预览.......................................................................................... 219 8.3.5 构建开发环境................................................................................. 2235 8.3.6 数据库设计...................................................................................... 223 8.3.7 文件夹组织结构............................................................................. 229 8.4 公共类设计................................................................................................. 231 8.5 网站首页设计............................................................................................. 234 8.5.1 网站首页概述................................................................................. 234 8.5.2 网站首页技术分析......................................................................... 235 8.5.3 网站首页实现过程......................................................................... 236 8.5.4 单元测试.......................................................................................... 239 8.6 用户注册页面设计 .................................................................................... 240 8.6.1 用户注册页面概述......................................................................... 240 8.6.2 用户注册技术分析......................................................................... 241 8.6.3 用户注册实现过程......................................................................... 242 8.7 搜索信息功能............................................................................................. 247 8.7.1 搜索信息功能概述......................................................................... 247 8.7.2 搜索信息功能技术分析................................................................. 248 8.7.3 搜索信息功能实现过程................................................................. 249 8.8 发布信息页设计 ........................................................................................ 252 8.8.1 发布信息页概述............................................................................. 252 8.8.2 发布信息页技术分析..................................................................... 252 8.8.3 发布信息页实现过程..................................................................... 255 8.9 货源信息页设计 ........................................................................................ 257 8.9.1 货源信息页概述............................................................................. 257 8.9.2 货源信息页技术分析..................................................................... 257 8.9.3 货源信息页实现过程..................................................................... 258 8.10 货源详细信息页设计 .............................................................................. 260 8.10.1 货源详细信息页概述 .................................................................. 260 8.10.2 货源详细信息页技术分析 .......................................................... 2616 8.10.3 货源详细信息页实现过程 .......................................................... 262 8.11 本项目小结............................................................................................... 2647 第一章任务 1.1 WEB 应用程序概述 【任务目标】ASP.NET 概述(1)了解 Web 应用程序的体系结构 (2)了解 Web 应用程序的开发技术 Web 应用程序是指通过 Web 服务器来完成的应用程序的功能,并将运行的 结果通过网络传递给终端用户,终端用户使用 Web 浏览器来运行的应用程序。 1.1.1 Web 应用程序的体系结构 目前在 ASP.NET Web 项目开发中,较为流行的开发模式是三层逻辑体系结 构,所谓三层逻辑体系结构是指数据访问层、业务逻辑层、用户表示层。 数据访问层涉及到数据库本身、存储过程以及提供数据库接口的组件,为后 台数据库服务器;业务逻辑层指的是封装了应用程序逻辑的组件,由.vb、.cs 等 文件编译而成的.dll 组件, 而用户表示层指的是后缀名为.aspx 的 web 应用程序界 面。 1.1.2 Web 应用程序的开发技术 Web 应用程序的开发技术分为两类:基于客户端的和基于服务器端。 基于客户端的开发技术是指开发的代码在客户机上运行,主要有 HTML 语言、CSS 技术、客户端脚本技术、DHTML 技术、DOM 技术、Active X 技术 和 Java Applet 等。 基于服务器端的开发技术是指开发的代码在服务器上运行,主要有 CGI 技 术、PHP 技术、ASP 技术、ASP.NET 技术和用于后台数据处理的 web 应用程序 技术。 任务 1.2 认识 ASP.NET 【任务目标】 (1)了解 ASP.NET 的优势 (2)了解 ASP.NET 的关键技术和 ASP.NET 的基本应用程序文件 ASP.NET 是一个用于 Web 开发的全新的框架,其中包含了许多新的特性。 它使用的是成熟的编程语言如:VB.NET 和 C#,ASP.NET 使用编译后的语言,1 从而提升性能和伸缩性,ASP.NET 提供了更易于编写、结构更清晰的代码,这 些代码更容易进行再利用和共享,ASP.确实是一个里程碑式的版本,它简化了开 发人员的工作。 1.2.1 ASP.NET 的优势ASP.NET 是建立在公共语言运行库上的编程框架,与过去的 web 开发模型 相比,ASP.NET 的优势突出体现在于: (1)增强性:ASP.NET 是在服务器上运行的已编译好的公共语言运行库代 码,还可以利用早期绑定、实时编译、本机优化等。 (2)灵活性:由于 ASP.NET 基于公共语言运行库,.NET 框架类库、消息 处理和数据访问解决方案都可以从 web 无缝访问。 (3)简易性:ASP.NET 使执行任务变得很容易,从简单的窗体提交和客户 端身份认证到部署和站点配置。 (4)可管理性:ASP.NET 采用基于文本的分层配置系统,简化设置置应用 服务器环境和 web 应用程序。 (5)可缩放性和可用性:ASP.NET 在设计时考虑了可缩放性,增加了专门 用于在聚集环境和多处理器环境中提高性能的功能。 (6)安全性:借助内置的 Windows 身份认证和基于每个应用程序的配置, 可以保证应用程序是安全的。 1.2.2 ASP.NET 的关键技术ASP.NET 完全基于模块与组件,具有更好的可扩展性和定制性,数据处理 方面引入了许多新技术。 (1)事件驱动:ASP.NET 允许用服务器控件取代传统的 HTML 元素,并充 分支持事件驱动机制,不必考虑如何将服务器端的信息回送浏览器,每个控件都 有属于自己的事件,每个事件都会触发一个事件处理。 (2)代码隐藏技术:ASP.NET 中引入了代码隐藏(CodeBehind)技术,通 过使用代码隐藏技术、用户控件、自定义控件和组件等方法,可以很好地将程序 的执行代码和逻辑代码分开,从而实现了结构化的 web 页面设计。 (3)数据绑定技术:在 ASP.NET 中一些新的声明性数据绑定性语法允许程 序设计人员不仅可以绑定到数据源,而且可以绑定到简单属性、集合、表达式或 从方法调用所返回的结果中。2 (4)数据访问技术 ADO.NET:在 ASP.NET 的服务框架中包括了 ActiveX Data Objects+(ADO.NET)类库。基于网络的可扩展的应用程序和服务提供数据 访问服务,并考虑了可伸缩性、无状态性和 XML 的设计。 (5)其他技术:ASP.NET 还采用面向对象机制,多语言支持,大型站点应 用等。 1.2.3 ASP.NET 应用程序文件在 ASP 中,文件类型只有一种扩展名是.asp 的文件,而在 ASP.NET 中,由 于支持多种语言开发及支持编写 Web 服务,因此有很多程序文件类型。 表 1-1 列出了 ASP.NET 应用程序文件类型。表 1-1 ASP.NET 应用程序文件类型名称 ASP.NET Web 窗体文件 ASP.NET 的代码隐藏文件 页 .cs、.jsl、.vb 文件扩展名 .aspx 用途 包含 ASP.NET 程序代码的文件, 该文件可包含 Web 控件和其他业务逻辑。 运 行 时 要 编 译 的 类源 代 码 文 件 。类 可 以 是 HTTP 模 块 、 HTTP 处 理 程 序 , 或 者 是 ASP.NET 页 HTTP 处理程序介绍的代码隐藏 文件。 Web 用 户 控 件 文 件 Global.asax 文件 .asax 该文件包含从 HttpApplication 类派生并表示 该应用程序的代码 一般处理程序文件 .ashx 该文件包含实现 IHttpHandler 接口以处理所 有传入请求的代码 XML Web services 文件 跟踪查看器文件 .browser .asmx 该文件包含通过 SOAP 方式可用于其他 Web 应用程序的类和方法 浏览器定义文件,用于标识客户端浏览器 的启用功能 Web.config 配置文 件 .config 该文件包含其设置配置各种 ASP.NET 功能的 XML 元素3.ascx该文件定义自定义、可重复使用的用户控件 母版页.master它定义应用程序中引用母版页的其他网页的 布局站点地图文件.sitemap该文件包含网站的结构。 ASP.NET 中附带了一 个默认的站点地图提供程序,它使用站点地图 文件可以很方便地在网页上显示导航控件。Visual Studio 项目 目录 数据库文件.csproj 、 . Visual Studio 客户端应用程序项目的项目文件 vbproj、vjsproj .mdf.mdb.ldb 数据库信息任务 1.3 搭建 asp.net 集成开发环境 【任务目标】 (1)了解 IIS 的安装和配置 (2)了解 Visual Studio 2010 的安装 Asp.net 应用程序的开发和运行环境主要包括 Internet 信息服务(IIS)和 Microsoft Visual Studio.NET 2010。下面介绍安装和配置 IIS 以及 Microsoft Visual Studio.NET 2010。 1.3.1 安装和配置 IIS Internet 信息服务(Internet Information Sever,IIS) ,它是一种 Web 服务,主 要包括 WWW 服务器、FTP 服务器等。通过 IIS,可以很容易地在 Intranet(局 域网)和 Internet(因特网)上发布信息。 IIS 是微软公司主推的 Web 服务器之一,Windows 2000 Advanced Server 和 Windows XP 操作系统中已经包含了 IIS 5.1,Windows Server 2003 操作系统中已 经包含了 IIS 6.0,因而用户能够利用 Windows NT Server 和 NTFS(NT File System,即 NT 的文件系统)内置的安全特性,建立强大、灵活而安全的 Internet 和 Intranet 站点。具体的 IIIS 的安装和配置可以参考相关文档,这里就不详细介 绍了。 1.3.2 安装 Visual Studio 2010 要利用 Visual Studio 2010 开发 ASP.NET Web 应用程序, 必须首先安装 Visual Studio 2010 开发环境。下面介绍安装 Visual Studio 2010 的具体步骤。 (1)单击 Visual Studio .NET 2010 的安装应用程序 Setup.exe,弹出【Visual4 Studio 2010 安装程序】对话框,如图 1-1 所示。该对话框中显示了“安装 Visual Studio 2010“、 “安装产品文档”“检查 Service Release”3 个选项,其中只有“安 、 装 Visual Studio 2010”选项可用。图 1-1 Visual Studio 2010 安装开始界面(2) 【安装 Visual Studio 2010】 单击 链接, 【Microsoft Visual Studio 2010】 弹出 对话框,此时,安装程序正在加载安装组件。图 1-2 Visual Studio 2010 安装向导(3)单击【下一步】按钮,进入【Microsoft Visual Studio 2010 安装程序-5 起始页】界面,选中【我已阅读并接受许可条款】单选按钮,单击【下一步】按 钮,进入【Microsoft Visual Studio 2010 安装程序-选项页】对话框。图 1-3 接受用户许可协议(4)在下所示的对话框中可以选择要安装的功能,共包括&完全&和&自定义 &2 个选项。并且可以选择产品安装路径。这里选中【完全】单选按钮,并配置 需要安装的功能,同时设置产品安装路径,单击【下一步】按钮,进入如图 1-5 所示的安装界面。图 1-4 选择安装路径6 图 1-5 安装进行中(5)要求重启图 1-6 要求重新启动系统(6)重启后安装7 图 1-7 继续安装程序(7)安装成功图 1-9 安装成功提示(8)安装成功后 visual studio 2010 的首页面8 图 1-10 系统集成环境任务 1.4 创建第一个 ASP.NET 程序 【任务目标 】 (1)了解 VS 集成开发环境 (2)创建第一个 ASP.NET 网站 具体操作步骤 (1)创建网站,选择文件|新建网站9 图 1-11 创建网站在弹出的对话框中选择网站的语言和创建路径,默认为 C#和我的文档下的 website1图 1-12 选择后台编程语言图 1-13 选择文件存放路径添加新页面,命名为 welcome.aspx10 图 1-14 添加新 Web 窗体(2)创建控件于运行网站 拖拽 Label、TextBox、Button 控件到 welcome.aspx 设计窗口图 1-15 设计页面右击控件,选择属性,修改 Label1 控件的 Text 属性为请输入姓名:Btuton1 的 Text 属性为确定11 图 1-16 设置 Label 控件属性图 1-17 设置按钮控件属性(3)添加事件代码 双击 Button 按钮或者选择按钮属性的 Button_Click 事件12 图 1-18 编写后台代码保存 welcome.aspx 选择调试|启动调试,或 F5 按键,运行,第一次运行询问 是否加入 web.config 调试功能,单击确定图 1-19 添加 web.config 文件调试运行13 图 1-20 页面运行效果14 第二章ASP.NET 内置对象Web 应用开发中很重要的一个问题就是在 Web 页面之间的信息传递和状态 维护。ASP.NET 提供了一些内置对象,如 Response 对象、Request 对象、Server 对象、Cookie 对象、Application 对象和 Session 对象,以帮助 Web 开发人员来管 理 Web 页面之间的状态,实现特定的一些功能。 任务 2.1 使用 Response 对象实现用户登录功能 【任务目标】 (1)掌握 Response 对象的常见方法; (2)掌握 Response 对象的基本工作原理; 2.1.1 Response 对象 Response 对象用于输出数据到客户端, 包括向浏览器输出数据、 重定向浏览 器到另一个 URL 或向浏览器输出 Cookie 文件等。 1. 向浏览器输出数据在 Web 开发中使用最频繁的语句要数显示文本了。Response 对象提供了 Write 方法来完成这一功能。 下面的代码在页面上显示一段欢迎语句。 Response.Write(&欢迎光临我的 ASP.NET 网站!&); 除了可以将指定的字符串输出到客户端浏览器外,也可以把 HTML 标记输 出到客户端浏览器。下面的代码使用 Write 方法向客户端浏览器输出一个无序列 表。 Response.Write(&专业名称列表:&); Response.Write(&&ul&&); Response.Write(&&li&计算机应用技术&); Response.Write(&&li&软件技术&); Response.Write(&&li&计算机信息管理&); 使用 Write 方法也可以输出 JavaScript 脚本,客户端浏览器会识别并执行这 些脚本程序。下面的代码向客户端输出一段 JavaScript 脚本代码,实现在客户端 弹出一个信息提示框。15 Response.Write(&&script language=javascript&alert('Welcome!')&/script&&); 2. 使网页转向Response 对象的 Redirect 方法将客户端浏览器重定向到另外的 URL 上,即 跳转到另一个网页。Redirect 方法常用于“用户登录”页面,可以使服务器对不 同的客户提供不同的登录页面。下面的代码强制无条件重定向到另一个 WEB 站 点。 Response.Redirect(&http://ww.baidu.com&); 下面的代码实现对用户在名称为 txtName 的文本框中输入的用户名进行判 断,将不同的用户引导到不同的页面上。 Switch( txtName.Text) { Case “admin”: Response.Redirect(“ManagePage.aspx”); B Case “teacher”: Response.Redirect(“TeacherPage.aspx”); B Case Else Response.Redirect(“StudentPage.aspx”); B } 3. 向浏览器输出文件Response 对象提供了 WriteFile 方法,可以将指定的文件直接写入 HTTP 内 容输出流。 下面的代码将名为“file.txt”的文本文件的所有内容直接写入输出流。 Response.WriteFile(&file.txt&); 文本文件“file.txt”中的内容可能如下: &html& &body& &ul&16 &li&计算机应用技术 &li&软件技术 &li&计算机信息管理 &/ul& &/body& &/html&2.1.2 1.用户登录功能实现任务情景描述下面的示例实现用户登录功能,并限制用户名和密码输入错误在 3 次以内。 错误在 3 次以内,以信息框的形式提示;错误超过 3 次以上,就锁定用户名和密 码输入框。图 2-12. 具体操作步骤用户登录界面(1)添加一个新页面,并设计页面,效果图如图 2-1 所示。 (2)为“登录”按钮 Button1 添加 Button1_Click 事件代码,代码如下: static int i, protected void Button1_Click(object sender, EventArgs e) { if (tbx_id.Text == &admin&) { if (tbx_pwd.Text == &admin&) { Response.Redirect(&welcome.aspx&); }17 else { i = i + 1; if (i & 3) { Response.Write(&&script language=javascript&alert(' 密 码错误,请重新输入密码!')&/script&&); tbx_pwd.Text = &&; } else { Response.Write(&&script language=javascript&alert(' 密 码输入超过 3 次,您不是合法的用户!')&/script&&); tbx_id.ReadOnly = tbx_pwd.ReadOnly = } } } else { j = j + 1; if (j& 3) { Response.Write(&&script language=javascript&alert(' 用户名 错误,请重新输入用户名!')&/script&&); tbx_id.Text = &&; } else { Response.Write(&&script language=javascript&alert(' 用户名 输入超过 3 次,您不是合法的用户!')&/script&&);18 tbx_id.ReadOnly = tbx_pwd.ReadOnly = } } } (3)为“重置”按钮 Button2 添加 Button2_Click 事件代码,代码如下: protected void Button2_Click(object sender, EventArgs e) { tbx_id.Text == &&; tbx_pwd.Text == &&; } 任务 2.2 使用 Request 对象实现数据传递【任务目标】 (1)掌握 Request 对象的基本工作原理; (2)掌握 Request 对象在页面传值中的运用; 2.2.1 Request 对象 1. 页内数据传递下面的示例实现页面首次加载显示注册界面;当用户提交注册信息时,将获 取用户输入信息与客户端环境信息并在当前页面下方显示, 从而实现页内数据传 递。具体操作步骤如下: (1)新建页面,命名为 Login.aspx,并添加相应的控件。3 个 TextBox 控件, 分别用于输入用户名,密码和回答信息;1 个 DropDownList 控件,用于让用户 选择提问的问题;2 个 Button 控件,分别实现注册和取消功能;以及若干个用来 显示信息的 Label 控件。页面设计效果图如图 2-2 所示,当用户单击“注册”按 钮后,页面运行效果图如图 2-3 所示。19 图 2-2页面设计效果图图 2-3页面运行效果图(2)双击 btn_OK 按钮进入到代码窗口,并实现 btn_OK_Click 事件代码。 protected void Button1_Click(object sender, EventArgs e) { If(!Page.IsPostBack) { Label5.Text = &来自& + Request.ServerVariables[&remote_addr&] + &的 朋友,您好!&; Label6.Text = & 您 当 前 运 行 的 文 件 是 : & +Request.ServerVariables[&script_name&]; Label7.Text = &以下是您提交的信息,请确认!&br& 用户名:& + TextBox1.Text + &&br&密码: & + TextBox2.Text + &&br&安 全提示问题 : & +20 DropDownList1.SelectedItem.Text + &&br&安全答案:& + TextBox3.T } } (3)双击 btn_Cancel 按钮进入到代码窗口,并实现 btn_Cancel_Click 事件 代码。 protected void btn_Cancel_Click(object sender, EventArgs e) { TextBox1.Text = &&; TextBox2.Text = &&; TextBox3.Text = &&; } 程序说明: (1) Page 对象的 Page.IsPostBack 属性可以用来判断页内是否有表单数据提 交。If(!Page.IsPostBack)为 true 时,表示是第一次加载页面。在本程序中可以确 保首次加载页面时,显示注册界面。 (2)Request 对象的 ServerVariables 属性可以用来获取服务器端和客户端的 环境变量信息。例如: Request. ServerVariables[“remote_addr”];//用来获取客户端的 IP 地址 Request. ServerVariables[“script_name”];//用来获取当前执行文件的路径2.2.2.跨页数据传递下面仍然以上例中的 Login.aspx 用户注册页面为例,实现如何在另一个 新页面上获取前一页面提交的数据, 实现跨页数据传递功能。 具体操作步骤如下: (1) 新增加一个页面, 命名为 Default.aspx,此页面用来获取并显示 Login.aspx 页面提交的信息。 (2) Default.aspx 页面上添加 2 个 Button 控件用来实现确认用户注册信息和 返回到 Login.aspx 页面功能。页面运行效果图如图 2-4 所示。21 图 2-4页面运行效果图(3)Login.aspx 页面的“注册”按钮功能代码如下。 protected void Button1_C lick(object sender, EventArgs e) { If(!Page.IsPostBack) { Response.Redirect(&Default.aspx?uid=& + TextBox1.Text + &&pwd=& +TextBox2.Text + &&tw=& + DropDownList1.SelectedItem.Text + &&da=& + TextBox3.Text); } } (2) Default.aspx 页面的 Page_Load 事件中实现跨页传递数据, Login.aspx 把 页面中用户输入的注册信息,传递到 Default.aspx 页面中显示。 protected void Page_Load (object sender, EventArgs e) { Response.Write(&来自& + Request.ServerVariables[&remote_addr&] + &的朋友, 您好!&);Response.Write(&您当前运行的文件是:&+Request.ServerVariables[&script_name&]);Response.Write(& 以 下 是 您 提 交 的 信 息 , 请 确 认 ! &br& 用 户 名 : & +22 Request.QueryString(&uid&) + &&br&密码:& + Request.QueryString(&pwd&) + &&br& 安 全 提 示 问 题 : & + Request.QueryString(&tw&) + &&br& 安 全 答 案 : & + Request.QueryString(&da&));} (3)Default.aspx 页面的“确认”按钮功能实现,Button1_Click 事件代码如 下: protected void Button1_Click(object sender, EventArgs e) { Response.Write(&&script&alert(“已成功创建您的帐户!”)&/script&&); } (4)Default.aspx 页面的“返回”按钮功能实现,Button2_Click 事件代码如 下: protected void Button2_Click(object sender, EventArgs e) { Response.Redirect(&Login.aspx&); }任务 2.3 使用 Cookie 对象记录用户访问网站的时间和次数 【任务目标】 (1)掌握 Cookie 对象的基本工作原理; (2)掌握 Cookie 对象的基本创建,读取,删除等操作; 2.3.1 Cookie 对象 对于 Cookie,在互联网上有一个比较成熟的描述性定义:Cookie 就是 Web 服务器保存在用户硬盘上的一段文本。Cookie 允许一个 Web 站点在用户的电脑 上保存信息并且随后再取回它。 Cookie 是一小段文本信息,会随着用户请求和页面传递在 Web 服务器和客 户端浏览器之间传递。用户每次访问站点时,Web 应用程序都可以读取 Cookie 包含的信息。Cookie 为 Web 应用程序保存用户信息提供了一种有效的方法。例 如当用户访问一个站点时,可以利用 Cookie 保存用户信息,这样,当用户下次23 访问该站点时,应用程序就可以检索以前保存的信息。 Cookie 是与 Web 站点而不是与具体页面关联的。所以无论用户请求浏览站 点中的哪个页面,浏览器和服务器都将交换 Cookie 信息。用户访问其他站点时, 每个站点都可能会向用户浏览器发送一个 Cookie, 而浏览器会将所有这些 Cookie 分别保存。 1. 创建 cookie 对象 //创建 cookie 实例 HttpCookie uncookie = new HttpCookie(&username&,&qq&); //把 cookie 信息 写到客户端 Response.Cookies.Add(uncookie ); 或者 Response.Cookies[Cookie 名称].Value =变量值; 例如:Response.Cookies[&username&].Value = &yf&; 2. 读取 cookie 对象 Request.Cookies[&username&].Value 3. 删除 cookie 对象 删除一个 cookie 的方法可以是设置一个过期的、同名的 cookie 来覆盖原 来的 cookie。例如: HttpCookie uncookie = new HttpCookie(&username&, &qq&); uncookie.Expires = DateTime.Now.AddDays(-1); Response.Cookies.Add(uncookie); 这里为 cookie 设置了一个一天前的有效期,实际上是让客户端浏览器来删 除这个过期的 cookie。 2.3.2 记录用户访问网站的时间和次数程序的实现1.任务情景描述 下面的示例实现当用户第一次来访时,显示问候和首次光临本站的信息,并 提示用户登录。运行效果图如图 2-5 所示。24 图 2-5运行效果图如图 2-6 所示。用户首次访问页面效果图当用户再次来访时, 显示再次来访信息, 访问次数以及用户上次来访的时间,图 2-62.具体操作步骤用户再次访问页面效果图(1)创建用户登录界面,添加 Label1、Label2 控件和 TextBox1、TextBox1 控件用来输入用户名和密码;添加 Label3、Label4、Label5 控件分别用来显示用 户的来访信息、访问次数和上次登录时间;添加 Button1、Button2 按钮用来登录 或者取消登录。该页面控件设计可以参照图 2-5 所示。 (2)为页面的 Page_Load 编写事件代码如下: protected void Page_Load(object sender, EventArgs e) {25 if(!Page.IsPostBack) { if (Request.Cookies[&username&] != null) { Label1.Text = Request.Cookies[&username&].Value + &你好, 欢迎你再次光临!&; if (Request.Cookies[&accenum&] != null) { int inum =Convert.ToInt32(Request.Cookies[&accenum&].Value) + 1; Label4.Text = & 你 是 第 & +Request.Cookies[&accenum&].Value + &次访问本站!&; HttpCookie numcookie = new HttpCookie(&accenum&, inum.ToString()); Response.Cookies.Add(numcookie); numcookie.Expires = DateTime.MaxV} if (Request.Cookies[&accetime&] != null) { Label5.Text = & 你 上 次 登 录 的 时 间 是 : & + Request.Cookies[&accetime&].V } } else { Label1.Text = &你好你是第 1 次光临本站!请登录.&; HttpCookie numcookie = new HttpCookie(&accenum&, &2&); Response.Cookies.Add(numcookie); numcookie.Expires = DateTime.MaxV }26 } } (3)在页面的“设计”视图中双击 Button1 按钮,在 Button1_Click 事件中 编写事件代码如下。Button1_Click 事件在用户单击 Button1“登录”按钮的时候 执行。 protected void Button1_Click(object sender, EventArgs e) { HttpCookie timecookie = new HttpCookie(&accetime&,DateTime.Now.ToLongDateString() + DateTime.Now.ToLongTimeString()); Response.Cookies.Add(timecookie); HttpCookie this.TextBox1.Text); Response.Cookies.Add(usernamecookie); timecookie.Expires = DateTime.MaxV usernamecookie.Expires = DateTime.MaxV this.Label1.Text = this.TextBox1.Text + &你好,登录成功!已在客户 端记录您的登录信息。&; } usernamecookie = new HttpCookie(&username&,任务 2.4 使用 Application 对象统计网站在线人数和访问网站的总人数 【任务目标】 (1)掌握 Application 对象的基本工作原理; (2)了解运用 Application 对象实现应用程序状态同步; 2.4.1 Application 对象 Application 对象可以用来在整个应用程序中共享信息, 只要是正在使用这个 网页程序的用户都可以存取这个变量。 每个 Application 对象变量都是 Application 对象集合中的对象之一,由 Application 对象统一管理。 1. 使用 Application 对象保存信息(1)Application 对象保存信息 Application[&键值名&] =值;27 Application.Add(&键值名&,值); (2)Application 对象获取信息 变量名=Application[“键值名”]; Application.Get(“键值名”); (3) Application 对象修改键值 Application.Set(&键值名&, 值); (4) Application 对象删除 Application.RemoveAll(); Application.Remove(“键值名”); 2. 应用程序状态同步ASP.NET 并发处理客户端的请求,应用程序中的多个线程可以同时访问存 储在应用程序状态中的值, 所以有可能存在多个用户同时存取同一个 Application 对象的情况。这样就有可能出现多个用户修改同一个 Application 命名对象,造 成数据不一致的问题。 HttpApplicationState 类提供两种方法 Lock 和 Unlock,以解决对 Application 对象的访问同步问题,一次只允许一个线程访问应用程序状态变量。 对 Application 对象调用 Lock 方法可以锁定当前 Application 对象, 以便让当 前用户线程单独进行写入或修改。当写入或修改完成后,对 Application 对象调 用 Unlock 方法解决对当前 Application 对象的锁定,这样其他用户线程才能对 Application 进行修改。 (1)只有当调用 Lock 的用户线程对 Application 对象调用相应的 Unlock 方 法时才会解除其他用户线程的修改限制。 (2)Lock 方法和 Unlock 方法应该成对使用 Application.Lock(); Application[&键值名&] =值; Application.UnLock(); 如果没有显示调用 Unlock 方法解除锁定,当请求完成、请求超时或请求执 行过程中出现未处理的错误并导致请求失败时,.NET Framework 将自动解决锁 定。这种自动取消锁定会防止应用程序出现死锁。 3. Application 事件28 在 ASP.NET 应用程序中可以包含一个特殊的可选文件――Global.asax文件, 也称为 ASP.NET 应用程序文件,它包含用于响应 ASP.NET 或 HTTP 模块引发的 应用程序级别事件的代码。Global.asax 文件驻留在基于 ASP.NET 的应用程序的 根目录中,如果该文件存在,IIS 会自动查找到,并执行其中相应的事件处理程 序。 Application 事件 事件名称 Application_Start Application_BeginRequest Application_AutherticateRequest Application_Error Application_End 说明 在应用程序启动时激发 在每个请求开始时激发 尝试对使用者进行身份验证时激发 在发生错误时激发 在应用程序结束时激发2.4.2统计网站在线人数和访问该网站的总人数程序的实现1.任务情景描述 该程序主要实现的是统计某一网站的当前在线人数和历史访问过该网站的 总人数。当用户访问该网站时,会在页面上显示,已有多少用户访问了该网站, 当前在线的有多少用户。 2.具体操作步骤 (1)新建一个页面,向页面的 Page_Load 事件过程添加如下代码: protected void Page_Load(object sender, EventArgs e) {Response.Write(&已有& + Application[&AllUser&] + &位用户访问了本 网站!&); Response.Write(&&br&&); Response.Write(&现有& + Application[&OnLineUser&] + &位用户在线! &); } (2)向 Global.asax 文件添加代码。Global.asax 文件内容如下:29 &%@ Application Language=&C#& %& &script runat=&server&& void Application_Start(object sender, EventArgs e) { // 在应用程序启动时运行的代码 Application.Lock(); Application[&AllUser&] = 0; Application[&OnLineUser&] = 0; Application.UnLock(); }void Application_End(object sender, EventArgs e) { // 在应用程序关闭时运行的代码 }void Application_Error(object sender, EventArgs e) { // 在出现未处理的错误时运行的代码 } void Session_Start(object sender, EventArgs e) { // 在新会话启动时运行的代码 Application.Lock(); Application[&AllUser&] = (int )Application[&AllUser&] + 1; Application[&OnLineUser&] =(int ) Application[&OnLineUser&] + 1; Application.UnLock(); }void Session_End(object sender, EventArgs e) { // 在会话结束时运行的代码。 // 注意: 只有在 Web.config 文件中的 sessionstate 模式设置为 // InProc 时,才 会引发 Session_End 事件 。如果 会话模 式设置为 StateServer // 或 SQLServer,则不会引发该事件。30 Application.Lock(); Application[&OnLineUser&] =(int ) Application[&OnLineUse r&] - 1; Application.UnLock(); } &/script& (3)在浏览器中预览页面效果,页面上显示当前网站的在线人数和访问该 网站的总人数,效果图如图 2-7 所示。图 2-7程序说明:页面运行效果图当应用程序启动时会激发 Application_Start 事件,在 Application 对象中 存储了应用程序的用户数初始值和在线用户数初始值。当一个新用户访问站点 时,将启动一个会话,激发 Session_Start 事件,修改用户数和在线用户数,使它 们各自加 1。当一个用户与站点断开,或者会话超时后,会激发 Session_End 事 件,修改在线用户数使其减 1。最后输出各个 Application 对象的值。 当然该程序也还是不完善的,还存在一定的问题。第一,总人数的统计,当 所有用户与站点断开后,总人数又从 0 开始,这个问题需要后面通过数据库来实 现;第二,在线人数的统计是不准确的,不是以用户关闭浏览器来决定与站点断 开,因为每个 Session 对象是有生命周期的,默认是 20 分钟。任务 2.5Session 对象在任务 2.4 中的运用【任务目标】 (1)掌握 Session 对象的基本工作原理; (2)理解 Session 对象生命期的概念;31 2.5.1 Session 对象 Session,即会话,是指一个用户在一段时间内对某一个站点的一次访问。 Session 对象在.NET 中对应 HttpSessionState 类,表示“会话状态” ,可以保存于 当前用户会话相应的信息。与 Application 对象类似,可以将任何对象作为全局 变量存储在 Session 对象中,从而实现共享数据。不同之处在于:Application 对 象负责维护整个 Web 应用程序运行过程中所有用户的信息, Session 对象只维 而 护一个用户、一次会话的信息。换句话说,对于一个 Web 应用程序而言,所有 用户访问到的 Application 对象的内容是完全一样的;而不同用户会话访问到的 Session 对象的内容则各不相同。 由于 Session 的这种特性, 可以使用 Session 对象存储特定的用户会话所需的 信息。当用户在应用程序的页面之间跳转时,存储在 Session 对象中的变量不会 被清除;只要没有结束会话状态,这些会话变量就可以被程序跟踪和访问。 Session 可以用来存储访问者的一些个人信息,如用户名字,个人偏好等。 Session 对象的生命周期是有限的,默认值为 20 分钟,可以通过 TimeOut 属 性设置会话状态的过期时间。 如果用户在该时间内不刷新页面或请求站点内的其 他文件, 则该 Session 就会自动过期, Session 对象存储的数据信息也将永远丢 而 失。 1. 使用 Session 对象保存信息(1)Session 对象保存信息 Session( “键值名“)=值 Session.Add(“键值名” ,值) (2)Session 获取信息 变量= Session( “键值名” ) 变量= Session.Item(“键值名”) (3)删除 Session 对象值 Session.Remove(“键值名“) (4)设置会话状态的超时期限,以分钟为单位。 Session.TimeOut=数值 2. Session 事件 Global.asax 文件中有 2 个事件应用于 Session 对象,它们的名称及说明如表32 所示。 Session 事件 事件名称 Session_Start Session_End 说明 在会话启动时激发 在会话结束时激发2.5.2 1.修改 Session 对象的默认生命周期任务情景描述在任务 2.4 中,存在一个问题就是在线人数的统计是不准确的,不是以用户 关闭浏览器来决定与站点断开,因为每个 Session 对象是有生命周期的,默认是 20 分钟。也就是说用户关闭浏览器并不代表与站点断开,而是要过 20 分钟后才 是断开。为了能够子在比较短的时间内能够让程序反映出在线人数的变化,我们 可以通过修改 Session 对象的生命周期来实现,例如在 1 分钟内就可以体现出网 站的在线人数的变化。 2. 具体操作步骤只需要在任务 2.4 的实现步骤中,修改 Session_Start 事件过程的代码即可。 修改后的代码如下: void Session_Start(object sender, EventArgs e) { // 在新会话启动时运行的代码 Application.Lock(); Session.TimeOut=1; Application[&AllUser&] = (int )Application[&AllUser&] + 1; Application[&OnLineUser&] =(int ) Application[&OnLineUser&] + 1; Application.UnLock(); } 通过上述修改,用户在 1 分钟后就和网站断开连接,在线人数的统计会在比 较短的时间内有变化。33 第三章ASP.NET WEB 窗体和服务器控件任务 3.1 web 窗体和服务器控件概述 【任务目标】 (1)了解 Web 窗体 (2)了解 Web 服务器控件的共有属性 3.1.1 WEB 窗体Web 窗体时 ASP.NET 页面的一种类型,含有交互式的窗体,时服务器端与 客户端浏览器之间数据传递的一种结构模式。 3.1.2 WEB 服务器控件共有属性ASP.NET 服务器控件具有更好的面向对象的特性,能自动检测客户端浏览 器的类型和功能,生成相应的 HTML 代码,从而最大限度地发挥浏览器的功能; 具有数据绑定, 所有属性都可以进行数据绑定, 某些控件可以向数据源提交数据。 除了 Literal、PlaceHolder 和 XML 控件外,其他所有控件都具有如下表所示 的共同属性。表 3-1 Web 服务器控件的共有属性属性名 Id Runat AccessKey Attributes 功能说明 设置控件名,在程序中可以调用 指定控件是服务器控件,取值是 server 指定一个字母或数字键,与 Alt 键组合,构成快捷键 没有被定义为公共属性而会在 HTML 代码中生成的那 些属性的集合,这个属性只有在程序中使用 BackColor BorderColor BorderWidth BorderStyle CssClass 设置控件的背景色 设置控件的边框颜色 设置控件的边框宽度 设置控件的边框样式 设置应用到控件的样式表34 Style Enable Font ForeColor Height TabIndex ToolTip Width设置应用到控件外层标记上的 CSS 样式属性集合 设置控件是否要效 取值为 true 或 false 设置控件的字体 设置控件上文本的颜色 设置控件的高度 设置当用户按 Tab 键时经过控件的顺序 设置当鼠标停留在控件上时显示的提示文本 设置控件的高度除了以上共有的属性之外,每个 Web 服务器控件还有特殊的属性、事件和 方法,以下将分别介绍。 任务 3.2 文本服务器控件 【任务目标】 (1)了解 Label 控件的基本属性和使用 (2)了解 Literal 控件的基本属性和使用 (3)了解 TextBox 控件的基本属性和使用 (4)了解 HyperLink 控件的基本属性和使用 上一节介绍了 Web 控件的共有属性,从本节开始将重点介绍如何使用 web 服务器控件。 本节主要介绍文本服务器控件, 包括 Label 标签) ( 控件、 Literal (静态文本)控件、Txetbox(文本框)控件及 HyperLink(超链接文本)控件。 3.2.1 Label 控件 Label 控件一般用来给文本框、列表框、组合框等空间添加描述性的文字, 或给窗体添加说明文字,或用来显示处理结果等信息。Label 控件显示的内容可 以在属性窗口中设定,也可以在程序运行时编写代码进行修改。 提示:当用户希望在运行时更改页面中的文本可以使用 Label 控件,而当只 需要显示内容并且文字内容不需要改变时,建议使用 HTML 显示。 Label 控件的语法格式如下: &asp: Label id = “Label1” Text +”要显示的文本内容” runat =”server”/& 或者 &asp: Label id = “Label1” runat =”server”&要显示的文本内容&/asp: Label&35 3.2.2 Lite ral 控件 当要以编程的方式设置文本而不添加额外的 HTML 标记时,可以向叶面添 加 Litreal 控件。当要向叶面动态添加文本而不添加任何不属于该动态文本的元 素时,Literal 控件非常有用。例如,用户可以使用 Litreal 控件来显示从文本或流 中读取的 HTML。 Literal 控件在 Visual Studio2010 工具箱的“标准”选项卡中形如 Literal 控件的语法格式如下: &asp : Literal id =”Literal1” Text =”要显示的文本内容” ruant =”server/& 或者: &asp : Literal id =”Literal1” ruant =”server”& 要 显 示 的 文 本 内 容 &/asp: Literal& 除了 3.2 节介绍的共有属性外,Literal 控件还有 2 个重要的属性。 Text:设置 Literal 控件中显示的文本。 Mode:设置 Literal 控件文本的显示方式。共有 3 个选项:Transform(不修 改 Literal 空的文本) 、PassThrough(移除文本中不受支持的标记语言元素)和 Encode(对 Literal 控件的文本惊醒 HTML 编码) 。如果一个 Literal 控件的 Text 属性值为“&&font color =red&&b&The Mode is …&/b&&/font&”,其 Mode 属性值为 Transform、PassThrough 和 Encode 的效果,分别如图 3-2 所示的 1、2、3 行的内 容。 ,图 3-1 Literal 控件 Mode 属性的效果提示:如果只是显示静态文本。则可以使用 HTML 呈现,而不需要 Literal 控件。只有在需要以编程方式呈现文本时才使用 Literal 控件。 3.2.3 TextBox 控件 TextBox 控件用于让用户在 Web 叶面中输入文本信息,在某些情况下,也可 以用来显示文本信息。TextBox 的语法格式如下: &asp :TextBox id = “value”36AutoPostBack=”true|false” Columns=”characters” MaxLength=” characters” Rows=”rows” Text=”text” Wrap=”True|false” Runat=”server”/&TextMode=”SingleLine|MultiLine|Password” OnTxxtChangede=”OnTextChangedMethod”TextBox 控件 在 Visual Studio 2010 的工具箱 的“标准” 选项卡中形如 ,除了 3.2 节介绍的共有属性外,TextBox 控件还有如下表 3-4 所示的 属性:表 3-4 TextBox 常用属性和事件属性/事件名 AutoPostBack 属性/事件 属性 取值 True/False 功能说明 设置是否允许自动回 传事件到服 务器 Columns MaxLength Rows TextMode 属性 属性 属性 属性 数字 数字 数字 Single/MutilLine/P assword Text Wrap OnTextChanged 属性 属性 事件 字符串 True/False 确定文本框的值 确定是否允许自动换行 当内部文本发生变化 时可触发的 事件 提示:一定要将文本框的 AutoPostBack 属性设置为 true,在文本修改后,自 动回发到服务器,才能激发 TextChanged 事件。 3.2.4 Hype rLink 控件 ASP.NET 中的 HyperLink 控件用于创建超链接,相当于 HTML 元素的&A& 标注。HyperLink 的语法形式如下: &asp: HyperLink id=&HyperLink1& ImageUrl=&url& Target=&target& Text=&超链接文字& NavigateUrl=&url& 设置可显示的最大列数 设置最多可输入字符数 设置可显示的最大行数 单行/多行/密码显示Runat=&server& &/asp:HyperLink &HyperLink 控件在 Visual Studio 2010 的工具箱的“标准”选项卡中形如 ,除了 3.2 节介绍的共有属性外,其常用属性如下表 3-5 所示:37 表 3-5 HyperLink 控件常用属性属性/事件名 Text ImageURL NavigateURL Target 属性/事件 属性 属性 属性 属性 取值 字符串 URL 字符串 URL 字符串 字符串 功能说明 设置超链接文本 当用一个图像链接时,设置图像所在位置 设置要链接的网址 设置链接内容显示方式其中 Target 取值如下: _blank,在新窗口中显示目标链接的页面; _parent,将目标链接的页面显示在上一个框架集父级中; _self,将目标链接的页面显示在当前框架中; _top,将内容显示在没有框架的全窗口中。也可以是自定义的 HTML 框架的 名称。 任务 3.3 按钮服务器控件 【任务目标】 (1)了解 button 按钮控件的基本属性和使用 (2)了解 LinkButton 控件的基本属性和使用 (3)了解 ImageButton 控件的基本属性和使用 用户访问网页时常常需要在特定的时候激发某个动作来完成一系列的操作, 使用 ASP.NET 标准服务器控件中的按钮控件可以实现这个功能。ASP.NET Web 服务控件中包含 3 种按钮控件: Button(按钮) LinkButton(连接按钮) 、 、 ImageButton(图像按钮) ,本节将对这 3 种按钮的属性和方法进行详细介绍。 3.3.1 Button 控件Button 控件是一种常用的单击按钮传递信息的方式, 能够把页面信息返回到 服务器。Button 控件的语法格式如下: &asp: Button id=&MyButton& Text=&Text& CommandName=&command& CommandArgument=&commandargument& CausesValidation=&true | false&OnClick=&OnClickMethod& Runat=&server&/& Button 控件在 Visual Studio 2010 的工具箱的“标准”选项卡中形如,除了 3.2 节介绍的共有属性外,其常用属性和事件如下表 3-7 所示:38 表 3-6 Button 控件的主要属性属性/事件名 Text CommandName 属性/事件 属性 属性 取值 字符串 字符串 功能说明 表示在按钮上显示文本 用于获取或设置 Button 按钮将要触发 事件的名称,当有多个按钮共享一个 时间处理函数时, 通过 CommandName 来区分要执行哪个 Button 事件 CommandArgument 属性 字符串 用于指示命令传递的参数,提供有关 要执行的命令的附加信息以便于在事 件中进行判断 CauseValidation 属性 True/False 当用户单击按钮时要执行的事件处理 方法 3.3.2 Button 按钮的使用1.任务情景描述 页面上存放一个 button 按钮,没有点击按钮时候显示没有单击确定按钮,点 击之后显示点击了确定按钮。图 3-3 点击按钮前 2.具体操作步骤图 3-4 点击按钮后(1)启动 Visual Studio 2010,新建一个 ASP.NET 项目。 (2) 在 Defauil.aspx 页面中添加一个按钮和一个 Label 控件,将 Label 控 件的 ForeColor 属性设置为“Blue”、Text 属性设置为“还没有单击“确定”按钮”, 将 Button 控件的 Text 属性设置为 “确定”。 (3) 双击“确定”按钮生成 Button1_Click 方法,在 Defauil.aspx.cs 中添加如 下代码。 protected void Button1_Click(object sender, EventArgs e) {39 Label1.Text=&您单击了确定按钮&; } (4) 按快捷键 Ctrl+F5 运行程序, 结果如图 3-3 所示。 当单击按钮时, Label 控件的文字就会变成“您单击了确定按钮” ,如图 3-4 所示。 3.3.2 LinkButton 控件 ASP.NET Web 服务器控件中的 LinkButton 控件是一个超链接按钮控件,它 是一种特殊的按钮,其功能与普通按钮控件(Button)类似。但是 LinkButton 控 件是以超链接形式显示的,其外观和 HyperLink 相似,功能与 Button 相同。 LinkButton 控件的语法格式: &asp: LinkButton id=&LinkButton1&Text=&Text&CommandName=&command& CommandArgument=&commandargument& CausesValidation=&true | false& OnClick=&OnClickMethod&Runat=&server&/& 提示: LinkButton 控件必须放在带有 runat=server 属性的&form&&/form&之间。 LinkButton 控件在 Visual Studio.NET 2005 的工具箱的“标准”选项卡中形如 。其中,Text 属性用于设置 LinkButton 控件上的文字按 钮,OnClick 事件是当用户单击按钮时的事件处理函数。 3.3.3 制作登录页面1.任务情景描述 本实例要设计学生管理系统的用户登录页面,如图 3-5 所示,图 3-5 用户登录界面2.具体操作步骤 (1)启动 Visual Studio 2010,新建一个网站。 (2)在项目的默认网页 Default.aspx 中添加一个 3 行 3 列的表格进行布局。 (3)在表格前两行的第一列中分别添加 1 个 Label 控件,将其 Text 属性分 别设置为“用户名”和 “密码” ;在表格中添加两个 TextBox 控件。40 (4) 制作登录与重置按钮。在第 3 行放置 2 个 Button 控件。将 2 个 Button 控件的 Text 属性分别设置为 “登录”和 “重置” 。 (5) 设置个控件的属性如表 3-2 示。表 3-7 控件属性列表控件 Label Label TextBox TextBox Button Button 属性设置 Text= “用户名” Text=“密码” Id= “UserName” ID=“Password” Text=“登录” Text=“重置“ 位置 位于表格的第一行第三列 位于表格的第二行第一列 位于表格的第一行第二列 位于表格的第二行第二列 位于表格的第三行第一列 位于表格的第三行第二列(6)按快捷键 Ctrl+F5 运行程序,结果如图 3-6 所示:图 3-6 登陆页面3.3.4 ImageButton 控件 ASP.NET Web 服务器控件中的 ImageButton 控件是一个图片形式的按钮, 其 功能与普通控件(Button)类似,只是 ImageButton 控件是以图片作为按钮,其 外观与 Image 相似,功能与 Button 相同。ImageButton 控件的语法格式如下: &asp:ImageButton id=”ImageButton1” ImageUrl=”string”Command=”Command” CommandArgument=”CommandArgument” CauseValidation=”True|False” OnClick=”OnClickMethod”… Runat=”Server”/& ImageButton 控件的常用的属性和事件如下: ImageUrl 属性:获取或设置在 ImageButton 控件中显示的图片的位置。 OnClick 事件:用户单击按钮后事件处理函数。 任务 3.4 图像服务器控件 【任务目标】41 (1)了解 Image 控件的基本属性和用法 (2)了解 ImageMap 控件的基本属性和用法 3.4.1 Image 控件Image 控件是用于显示图像的,相当于 HTML 标记语言中的&img&标记。 Image 控件在 Visual Studio.NET 2005 的工具箱的 “标准 ”选项卡中形如Image 控件的语法格式 &asp:Image id =”image1” imageUrl = “URL” … Runat =”server”/& Image 控件的基本属性 ImageUrl:获取或设置在 Image 控件中显示的图片位置。 AlternateText:获取或设置当图像不可用时,在 Image 中显示的替换文本。 ImageAlign:获取或设置 Image 控件相对于网页中其他元素的对齐方式。可 能的值有.NotSet、AbsBottom、AbsMiddle、BaseLine、Bottom、Left、Middle、 Right、TextTop 和 Top。 3.4.2 图片浏览页面 1.任务情景描述 很多网站都具备图片浏览功能,有的网站通过幻灯片的方式来浏览图片,有 的通过 Flash 动画来浏览图片。本实例通过动态添加超级链接控件,并连接到需 要浏览的图片来实现图片的浏览功能。 2.具体步骤 (1)启动 Visual Studio 2010 ,新建一个 ASP.NET 项目。 (2)在“解决方案资源管理器”窗口中新建一个名为 images 的文件夹。用 鼠标右键单击此文件夹,在弹出的快捷菜单中选择“添加现有项”命令,添加用 于浏览的图片文件,图片的文件名称依次命名为图片 1、图片 2??,如图 3-7 所示。 (3)在 Default.aspx 页面中添加一个 Image 控件,并在“属性”窗口中设置 Height 属性值为 200。42 图 3-7 Image 图像属性设置(4)在 Default.aspx.cs 的 Page_Load 函数中输入如下代码。 for (int i = 1; i &= 9; i++) { HyperLink newHL = new HyperLink(); //新生成一个超链接 newHL.Text = i.ToString(); newHL.Font.Size = 12; newHL.NavigateUrl = &?n=& + i.ToString(); //设置超 链接的 NavigateUrl 属性 this.Controls.Add(newHL); 控件添加到页面中 if (Request.QueryString[&n&] == null) { Image1.ImageUrl = &images/图片 1.jpg&;43//设置超链接的文本//将新生成的超链接//Image 控 件的初始的图片 } else { //动态改变 Image 控件中显示的图片 Image1.ImageUrl Request.QueryString[&n&] + &.jpg&; } } } (5)按快捷键 Ctrl+F5 运行程序,效果图如 3-8 所示,单击窗口下面的超级 链接,分别显示 Image 文件夹中的图片 1~图片 9。 = &images/ 图 片 & +图 3-8 图像显示页面效果3.4.3 ImageMap 控件 ImageMap 控件是一个可以在图片上定义热点 (HotSpot) 区域的服务器控件, 用户可以通过单击这些热点区域进行回发(PostBack)操作或者定向(Navigate) 到某个 URL 位址。 该控件一般用在需要对某张图片的局部范围进行互动操作时。 常用属性 ImageUrl:获取或设置在 ImageMap 控件中显示的图像的 URL。 AlternateText:获取或设置当图像不可用,在 ImageMap 控件中显示的替换 文字。44 ImageAlign:获取或设置图像在父容器中的位置。 HotSports:用于设置图像上热区位置及链接文件。 在 ImageMap 上设置热区的方法如下。 (1)在“属性”窗口中单击 HotSpots 属性右侧的按钮,弹出“HotSpots 集 合便捷器”对话框,如图 4-15 所示。 (2)在该对话框中单击“添加”按钮可向“成员”列表中添加热区。单击 “添加” 按钮右侧的三角按钮, 会弹出热区形状选择下拉列表, 包括 CirleHotSpot (圆形热区) 、RectangleHotSpot(矩形热区)默认为圆形热区。 (3)在“属性”列表中设置热区额的形状及链接的文件路径,热区的形状 不同,外观的属性设置也略有不同。 (4)单击“确定”按钮即可完成热区设置。 HotSpotMode 用 于 设 置 图 像 上 热 区 的 类 型 , 队 形 的 枚 举 类 型 时 System,Web.UI.WebControls. HotSpotMode。其取值及说明如表 4-2 所示。表 3-8 HotSpotMode 的取值取值 NotSet 说明 默认值,会执行定向操作,定向到用户指定的 URL 地址去。如果用 户未指定 URL 地址,那么将定向到其 Web 应用程序跟目录 PostBack Inactive 单击热区,将执行后部的 Click 事件。 无任何操作,即此时形同一张没有热点区域的普通图片地图导航对于一个网站来说是很有用的,例如,现在很多网站都提供电子地 图,用户可以在地图上单击自己想要查看的城市或地区,从而可以看到关于这个 城市或地区的相关信息。 3.4.4 制作站点地图页面 1. 任务情景描述利用本节图像服务器空间的而只是来实现一个简易的网站地图导航。 要做一个网站地图导航,首先就要设计一个网站的地图,这个地图可以是任 何格式的图像文件,因此,可以使用 ImageMap 控件实现在图像上单击某一区域 可浏览相应的网页。 2. 具体操作步骤(1)启动 Visual Studio 2010 ,新建一个 ASP.NET 项目。45 (2)在 Default.aspx 页面中输入“站点地图” ,并添加一个 ImageMap 控件 到该页面汇中,在属性窗口设置 Width 属性值为 400,ImageUrl 为 map.bmp. (3)在属性窗口中,单击 HotSpots 属性右侧的 按钮,打开“HotSpot 集合编辑器”对话框,单击“添加”按钮添加热区,并在“属性”类别中设置热区 的外观,AlternateText 和 NavigateUrl 属性,如图 4-16 所示。然后单击“确定” 按钮。 与图片建立的热区对应的 HTML 代码如下: &form id=&form1& runat=&server&& &div& &asp:ImageMap Width=&200px&& &asp:RectangleHotSpot AlternateText=& 点 击 进 入 用 户 信 息 & Bottom=&79& HotSpotMode=&Navigate& Left=&61& NavigateUrl=&userinfo.aspx& Right=&118& Top=&69& /& &asp:RectangleHotSpot AlternateText=& 点 击 进 入 客 户 信 息 & Bottom=&118& HotSpotMode=&Navigate& Left=&70& NavigateUrl=&customer.aspx& Right=&118& Top=&98& /& &/asp:ImageMap&&/div& &/form& ID=&sitemap& runat=&server& ImageUrl=&map.bmp&(4)按快捷键 Ctrl+F5 运行程序,把鼠标指针移动到图片上,当指针变为 “手”的形状时单击,旁边会有一个小的提示信息,然后点击相应的区域就会进 入到相应的页面,可以看到浏览器的状态栏上,显示了单击该区域会进入到的页 面,效果如图 3-9 所示。46 图 3-9 站点地图页面效果任务 3.5 选择服务器控件 【任务目标】 (1)了解 CheckBox 控件、CheckBoxList 控件的基本属性和用法 (2)了解 RaidoButton 控件、RadioButtonList 控件的基本属性和用法 在 web 页面中,经常需要从多个信息中选择其中一个或几个需要的数据, 如选择性别等,ASP.NET 提供了 CheckBox(复选框) 、CheckBoxList(复选列表 框) 、RadioButton(单选按钮) 、RadioButtonList(单选列表框)4 种用于选择的 控件,本节将对四种控件进行详细的介绍。 3.5.1 CheckBox 控件CheckBox 控件用于 Web 窗体中创建复选框,该复选框允许用户在 true 和 false 之间切换,提供用户从选项中进行多项选择的功能。 CheckBox 控件的语法格式如下: &asp: Text=”Label” TextAlign=”Right|Left” OnCheckedChanged=” Runat=”server”/& CheckBox 控件的常用属性和事件如下表 3-5 所示: Checked=”true|false” OnCheckedChangedMethod” CheckBox id=” CheckBox1” AutopostBox=”true|false”表 3-9 CheckBox 常用属性和事件47 属性/事件名 AutoPostBack属性/事件名 属性取值 True/false功能说明 当该值为 True 是且用户选择改变时触 发服务器的 OnCheckedChanged 事件Text TextAlign Checked OnCheckedCh anged 3.5.2属性 属性 属性 属性字符串 Right/Left True/false设置选项的文本 设置显示文本的对齐方式 确定复选框是否选中处理事件的 当复选框发生变化时可触发的事件处 方法名 理方法CheckBoxList 控件 CheckBoxList 是一个 CheckBox 控件组,是一个 CheckBox 的集合,当需要显示 CheckBox 控件并对所有控件都要相似的处理方式时,使用该控件比较 方便,CheckBoxList 控件的常用的语法格式如下: &asp:CheckBoxList id=”CheckBoxList” AutoPostBack=”true|false”CellPadding=”Pixels” DataSource=?&% databindingexpression %&?DataTextField=”DataSourceField” DataValueField=”DataSourceField”RepeatColumns=”ColumnsCount” Runat=”server”& &asp:ListItem value=”value” Selected=”true|false”&&/asp:ListItem& … &/asp:CheckBoxList& CheckBoxlist 常用属性和事件如下表所示:表 3-10 CheckBoxList 常用属性和事件属性/事件名 属 性 /事 取值 件 AutoPostBack 属性 True/False 当该值为 True 是且用户选择改变时触 发服务器的 OnCheckedChanged 事件 CellPadding DataSource DataTextField 属性 属性 属性 整数 数据源对象 数据字段对象48功能说明设置各选项之间的距离 设置选项数据源的对象 设置与数据源相关的数据字段 DataValueField属性数 据 字 段 值 对 设置与数据源相关的数据字段的值 象RepeatColumns RepeatDirection属性 属性整数 Vertical/Horizo ntal确定选项分行显示的字段数 确定选项的排列方式是垂直还是水平RepeatLayout属性Flow/Table确定选型的排列方式是平铺还是表格TextAlign Checked Items SelectedIndexes属性 属性 属性 属性Right/Left True/False 集合 集合设置文字的对齐方式 确定复选框是否选中 在编码时使用,表示各选项的集合 在编码时使用, 表示所有已选项的集合SelectedIndex属性整数在编码时使用, 用于表示已选项的索引SelectedItem属性对象在编码时使用, 用于表示一个被选定的 项目SelectedItems属性集合在编码时使用, 用于表示所有被选项的 集合OnSelectedIndexC 事件 hanged处 理 事 件 的 方 当复选框发生变化时可以触发事件的 法名 处理方法ListBoxItem 常用属性如下表 3-6 所示:表 3-11 ListItem 常用属性和事件属性/事件名 Text Value Selected 3.5.3 属性/事件 属性 属性 属性 RaidoButton 控件 取值 字符串 字符串 True/False 功能说明 设置选项的显示文字 设置选项的值 确定选项是否选中RadioButton 控件是一个用于选择的单选按钮控件,常用的格式如下: RadioButton 控件常用属性和事件如下表 3-8 所示:49 表 3-12 RadioButton 控件常用属性和事件属性/事件名 AutoPostBack 属性/事件 属性 取值 True/False 功能说明 当该值为 True 时, 如何控件的选 择发生变化,就自动触发服务器 的 OnCheckdChanged 事件 Text TextAlign Checked GroupName 属性 属性 属性 属性 字符串 Right/Left True/False 字符串 设置选项的显示文字 设置选项的文字的对齐方式 确定控件是否被选中 设置控件所属的组的名称,属于 同一组的单选按钮控 件在同一 时刻只能有一个被选中 OnCheckedChanged 事件 处 理 事 件 的 设置当选项发生变化 时可触发 方法名 3.5.4 RadioButtonList 控件 事件的处理程序RaidoButtonList 控件是一个 RadioButton 控件组, 由于该控件是使用一个 控件来表示 多个控件的组合,所以当有多个选项需要用户进行单选时,使用该控件十分 方便,常用格式 如下: &asp:RadioButonList id=”CheckBoxList” AutoPostBack=”true|false”CellPadding=”Pixels” DataSource=?&% databindingexpression %&?DataTextField=”DataSourceField” DataValueField=”DataSourceField”RepeatColumns=”ColumnsCount” Runat=”server”& &asp:ListItem value=”value” Selected=”true|false”&&/asp:ListItem& … &/asp: RadioButonList & 3.5.5 获取用户的个人爱好 1. 任务情景描述本实例主要是实现使用复选列表控件实现添加个人爱好的功能, 效果图如下50 所示:2.具体操作步骤(1)启动 vs2005,新建一个 ASP.NET 网站 (2)页面中输入文本:请选择您的爱好:请输入您的爱好,添加复选列表 框到页面中, 打开编辑按钮设置 Text 属性, 设置水平显示和 AutoPostBack 为 true, 添加 TextBox 控件和 Button 控件,添加 Label 控件,页面效果如下图所示:图 3-10 添加个人爱好页面效果图(3)双击水平显示生成事件,设置水平显示或垂直显示复选框 protected void CheckBox1_CheckedChanged(object sender, EventArgs e)51 { if (CheckBox1.Checked) CheckBoxList1.RepeatDirection = RepeatDirection.H else CheckBoxList1.RepeatDirection = RepeatDirection.V} (4)点击按钮控件,编写代码获取显示或获取个人爱好信息 protected void Button1_Click(object sender, EventArgs e) { string temps = & &; string lbmsg = &&; for (int i = 0; i & CheckBoxList1.Items.C i++) { if (CheckBoxList1.Items[i].Selected) { lbmsg += temps + CheckBoxList1.Items[i].T temps = & , &; } } if (lbmsg != &&) Label1.Text = &您的爱好有:& + else Label1.Text = &您没有任何爱好!?&; } (5)双击添加按钮,添加事件添加一个选项 protected void Button2_Click(object sender, EventArgs e) { string msg = TextBox1.T if (msg != &&) {52 this.CheckBoxList1.Items.Add(new ListItem(msg, msg)); this.TextBox1.Text = &&; } } (6)运行程序,查看效果。 任务 3.6 列表服务器控件 【任务目标】 (1)了解 ListBox 控件的基本属性和使用 (2)了解 DropDownList 控件的基本属性和使用 (3)了解 BulletedList 控件的基本属性和使用 3.6.1 ListBox 控件ListBox 控件是一个静态列表框,用户可以在该控件中添加一组内容列表, 以供访问网页的用户选择其中的一项或多项。 ListBox 控件中的可选项目是通过 ListItem 元素定义的,该控件支持数据绑 定。该控件添加到页面中后,设置列表项的方法与 CheckBoxList 控件相同。 ListBox 控件的语法格式如下: &asp: DropDownList id = “ListBox1” SelectionMode = “Single|Multiple” OnSelectedIndexChanged=”OnSelectedIndexChangedMethod” =“server”& &asp:ListItem Text selected=”true|false”/& &asp:ListItem Text selected=”true|false”/& &/asp: DropDownList& ListBox 控件的常用属性和事件如下表 3-13 所示: = “label” Value=” 第 二 个 列 表 项 的 内 容 ” = “label” Value=” 第 一 个 列 表 项 的 内 容 ” Runat表 3-13 ListBox 常用属性和事件属性/事件名 AutoPostBack 属性/事件名 属性 取}

我要回帖

更多关于 asp首页文件 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信