精通WEB2.0之第02章__ASP_30P
ASP.NET 2.0入门经典2

2.0入门经典(第4版)2.1 总体设计目标在开始开发Web站点之前,通常应该设想好站点所具有的功能;例如,一个博客(blog)站点,必须能够对帖子进行分类存储、向帖子添加评论,还需有进行管理的模块,这些是最少的功能。
另外,考虑一个简单的零售商店,它想进入电子商务领域,它希望通过Web站点让客户浏览并购买商品。
在着手开发任何一个站点之前,都必须仔细地考虑和设计,之后才能编写代码实现站点。
在开始讨论具体技术的实现时,我们应先讨论如何使用 2.0服务器端控件所支持的功能开发设计良好的站点。
毕竟,创建、使用和维护经过良好设计的站点要容易得多,而且维护费用更低。
本章将介绍以下概念:●怎样启动站点的设计流程,并在开始编写代码之前考虑站点的所有需求。
●使用Master和Content页面实现站点的一致外观,这是 2.0最重要的新功能。
●创建站点地图,该地图表明站点中存在哪些页面,以及这些页面在层次上与其他文件是什么关系。
●使用Web.config和Global.asax文件保存数据和代码的全局配置,这些配置将用于站点的所有页面。
在本章的结束部分有一些练习可以帮助加深对这些概念的理解。
1.1 总体设计目标设计一个功能完整的Web应用程序是一项很复杂的任务。
如果是开发自己的站点,可能对站点是什么样子考虑得已经很多很具体了,所以在开始编写代码之前知道自己要做什么。
然而,如果是为客户开发站点,就必须确保在站点的设计上与客户在各个细节上达成高度的一致。
在一个专业的开发环境中,这个过程通常包括如下步骤:●开发一个功能模型,该模型描述站点的具体运行情况。
当用户单击Log In按钮时会发生什么事情?当用户想浏览产品时哪些功能是可用的?在开始设计之前,需要回答这些问题以及其他很多问题,以免最后开发出来的站点不是客户想要的!●确定在实现站点的过程中可以使用的技术。
很多主机软件包对数据库的支持都有不同程度的限制,进而限制站点的总体大小,所以要尽早讨论这个问题并确保能使用所希望使用的技术。
ASP NET 2.0网站开发实例教程(vb版ppt教程)-第2章 面向对象程序设计

第2章 面向对象程序设计
类的属性定义示例
private string _MemberName = null; //定义可读可写的属性MemberName public string MemberName{ get{ return _MemberName; } set{ _MemberName = value; } }
第二步、为带有事件的对象实例(如obj),指派 事件处理方法:
Obj.MyEvent += new MyEventHandler (MyCallback);
第2章 面向对象程序设计
派生类定义
类的继承就是用已定义的类为基础,在此基础添加 新类中所特有的成员(如属性或方法),或对已有的成 员进行重写或覆盖。被继承的类称为基类或父类,继承 后产生的类称为派生类、超类或子类。一个基类能被多 个派生类继承,修改了基类,则由此产生的派生类也就 自动地被修改了。 类的继承性给编程人员带来的好处是巨大的,也是 面向对象程序设计的特点之一。
第2章 面向对象程序设计
类的定义
访问修饰符 class 类名 { 数据定义部分 构造方法定义部分 析构方法定义部分 属性定义部分 方法定义部分 事件定义部分
}
第2章 面向对象程序设计
类的构成
在本书项目中将实体的属性与操作实体的方法分开
实体类在用户界面层与业务逻辑层之间传递信息。
业务逻辑类负责在实体与数据层之间,为数据查询与 数据修改架起了一座桥梁。
第2章 面向对象程序设计
类的意义与构成
类是将对象抽象化,类中同时存储了数据及对数据操作的 代码。类中数据被隐藏起来,通过属性对数据进行读写,通 过方法对数据进行其它操作。 有时也可以将类的属性单独定义在一个类作为实体类,而 将方法定义在另一个类中作为实体的业务逻辑类。 类中除了具有所需的属性和方法之外,有时还有构造方法 与析构方法、事件等。构造方法在产生类的实例时被调用, 负责对类中的数据进行初始化工作;析构方法则是在类的实 例被回收前做一些结束操作;事件是类在特定消息时响应的 机制。
精通WEB2.0之第04章__SQL_Server数据库和ADO_15P

4.2.3 添加、修改和删除数据
SqlCommand对象不但可以获取数据,而且可以对数据执行添 加、更新、删除等操作。上述功能由该对象的 ExecuteNonQuery()方法实现,它执行Transact-SQL语句或存 储过程并返回受影响的行数。下面的代码实例定义了分别执 行添加、更新和删除操作的SQL语句。
4.2.4 调用存储过程
SqlCommand对象不但可以执行Transact-SQL语句,而且还可 以执行存储过程。 注意:默认情况下,SqlCommand对象执行Transact-SQL语句。 如果SqlCommand对象要执行存储过程,则把该对象的 CommandType属性的值设置为 “CommandType.StoredProcedure”即可。此时,该对象把它 的CommandText属性的值解释为存储过程的名称。
4.2.2 读取数据
使用SqlDataReader对象可以从数据源中读取或检索数据。该 对象提供一种向前的、行流的、读取数据的方式。该对象在 读取数据时,必须一直保持与数据库的连接。该对象具有以 下5个重要特征: 只能读取数据,不能对数据执行修改或删除等操作。 只能以前进的方式读取数据,不能再次访问已经被访问的数 据。 直接把数据传递给页面中的对象,即不能缓存正在读取的数 据。
4.1.2 SQL Server管理平台
如果读者安装了Microsoft Server 2005,那么可以执行【开 始】|【所05】|【SQL Server Management Studio】命令。打开【Microsoft SQL Server Management Studio】窗口,
4.2.5 存储过程的参数
SqlCommand对象不但可以执行存储过程,而且还可以为存储 过程添加参数。其中,存储过程的参数保存在SqlCommand对 象的Parameters属性中。它是一个集合,集合中元素的类型 为SqlParameter。SqlParameter类的属性如表4-10所示。
通过代码示例跟我学J2EE Web组件应用开发项目综合训练实例(第2部分)

目录1.1J2EE Web组件应用开发项目综合训练实例(第2部分) (2)1.1.1完善系统错误信息显示相关的程序 (2)1.1.2完善系统中的Servlet相关的程序 (2)1.1.3实现系统中的数据库访问相关的功能程序 (6)1.1J2EE Web组件应用开发项目综合训练实例(第2部分)1.1.1完善系统错误信息显示相关的程序1、将错误信息改变为动态可变化(1)修改showErrorInfo.jsp内的显示——应用EL表达式动态获得(2)修改Servlet程序——将错误信息保存到request对象中2、测试目前的功能的正确性1.1.2完善系统中的Servlet相关的程序1、修改页面的表单以区分不同的请求类型<input type="hidden" name="requestType" value="1" />2、修改后台的Servlet程序package com.px1987.webdemo.servlet;import java.io.IOException;import java.io.PrintWriter;import javax.servlet.RequestDispatcher;import javax.servlet.ServletException;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;public class UserInfoManageServlet extends HttpServlet {public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {/*** 首先获得请求的类型编号*/request.setCharacterEncoding("gbk");String requestType=request.getParameter("requestType");/*** 再识别请求的类型,分别进行转发到目标方法中进行对应的功能处理*/switch(Integer.parseInt(requestType)){case 1: //目前是登录请求吗?doLoginRequest(request, response);break;case 2: //目前是注册请求吗?doRegisterRequest(request, response);break;case 3: //目前是修改密码请求吗?doUpdatePassWordRequest(request, response);break;}}/*** 下面的方法是处理注册请求* @param request* @param response* @throws ServletException* @throws IOException*/public void doRegisterRequest(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {}/*** 下面的方法是处修改密码请求* @param request* @param response* @throws ServletException* @throws IOException*/public void doUpdatePassWordRequest(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {}/*** 下面的方法是处修登录请求* @param request* @param response* @throws ServletException* @throws IOException*/public void doLoginRequest(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {/*** (1)获得请求的参数——登录表单的各个参数*/String verifyCode=request.getParameter("verifyCode");String userName=request.getParameter("userName");String userPassWord=request.getParameter("userPassWord");String userType=request.getParameter("userType");/*** (2)对请求的参数进行“功能处理”*/boolean checkLoginResult=userName.equals("yang")&&userPassWord.equals("12345678")&&userType.equals("1");/*** (3)根据处理后的结果状态(正确或者错误)分别显示不同的信息(或者跳转不同的页面)*/RequestDispatcher requestDispatcher=null;String gotoTargetPageFile=null;if(checkLoginResult){gotoTargetPageFile="/indexContent/index.jsp";}else{request.setAttribute("errorInfoText", "你所输入的帐号或者密码不正确,请重新登录!");gotoTargetPageFile="/errorDeal/showErrorInfo.jsp";}requestDispatcher=request.getRequestDispatcher(gotoTargetPageFile);requestDispatcher.forward(request, response);}}3、再部署和测试目前的功能正确性1.1.3实现系统中的数据库访问相关的功能程序1、构建数据库表(1)数据库表结构(2)对应的SQL语句DROP TABLE IF EXISTS `personinfo`;CREATE TABLE `personinfo` (`personID` int(11) NOT NULL COMMENT '该字段位数据库表的主键',`loginName` varchar(255) NOT NULL,`loginPassWord` varchar(255) NOT NULL,`personType` tinyint(4) NOT NULL COMMENT '表代人员的类型编码', `findOutPassWordAsker` varchar(255) NOT NULL,`passWordAnswer` varchar(255) NOT NULL,`personSex` smallint(6) NOT NULL,`collageType` smallint(6) NOT NULL,`IDCardNumber` varchar(255) NOT NULL,`emailAddress` varchar(255) NOT NULL,`registerDate` date NOT NULL,`birthDate` date DEFAULT NULL,`mobileNumber` bigint(20) DEFAULT NULL,`interserting` varchar(255) DEFAULT NULL,`personImage` mediumblob,`comeFrom` varchar(255) DEFAULT NULL,`resume` mediumtext,PRIMARY KEY (`personID`)) ENGINE=InnoDB DEFAULT CHARSET=gbk;2、在项目中添加MySQL的JDBC驱动程序3、编程数据库连接相关的功能程序(1)代码示例package com.px1987.webdemo.dao;import java.sql.Connection;import java.sql.DriverManager;import java.sql.SQLException;public class ConnectionDataBase {private static String JDBC_DRiver_ClassName="com.mysql.jdbc.Driver";private static String DataBase_URL="jdbc:mysql://localhost:3306/webcourse";private static String loginName="root";private static String loginPassWord="root";/*** 利用static语句块保证其中的代码只会执行一次*/static{try {Class.forName(JDBC_DRiver_ClassName);} catch (ClassNotFoundException e) {e.printStackTrace();}}public ConnectionDataBase() {}/*** 下面的方法是创建JDBC的数据库连接对象* @return*/public Connection getJDBCConnection(){Connection jdbcConnection=null;try {jdbcConnection=DriverManager.getConnection(DataBase_URL,loginName,loginPassWor d);} catch (SQLException e) {e.printStackTrace();}return jdbcConnection;}}(2)添加测试代码public static void main(String args[]){ConnectionDataBase connectionDataBase=new ConnectionDataBase();Connection jdbcConnection=connectionDataBase.getJDBCConnection();if(jdbcConnection !=null){System.out.println("数据库连接相关的程序正确");}else{System.out.println("数据库连接相关的程序不正确");}}(3)测试本程序是否能够正确地连接数据库4、添加一个UserInfoPO类(1)类名称为UserInfoPO,包名称为(2)在该类中添加相关的成员属性变量package com.px1987.webdemo.dao; import java.io.InputStream;import java.sql.Date;import java.util.ArrayList;import java.util.List;public class UserInfoPO {public UserInfoPO() {}private int personID;public int getPersonID() {return personID;}public void setPersonID(int personID) {this.personID = personID;}public String getLoginName() {return loginName;}public void setLoginName(String loginName) {this.loginName = loginName;}public String getLoginPassWord() {return loginPassWord;}public void setLoginPassWord(String loginPassWord) {this.loginPassWord = loginPassWord;}public int getPersonType() {return personType;}public void setPersonType(int personType) {this.personType = personType;}public String getFindOutPassWordAsker() {return findOutPassWordAsker;}public void setFindOutPassWordAsker(String findOutPassWordAsker) {this.findOutPassWordAsker = findOutPassWordAsker; }public String getPassWordAnswer() {return passWordAnswer;}public void setPassWordAnswer(String passWordAnswer) { this.passWordAnswer = passWordAnswer;}public int getPersonSex() {return personSex;}public void setPersonSex(int personSex) {this.personSex = personSex;}public int getCollageType() {return collageType;}public void setCollageType(int collageType) {this.collageType = collageType;}public String getIDCardNumber() {return IDCardNumber;}public void setIDCardNumber(String iDCardNumber) { IDCardNumber = iDCardNumber;}public String getEmailAddress() {return emailAddress;}public void setEmailAddress(String emailAddress) { this.emailAddress = emailAddress;}public Date getRegisterDate() {return registerDate;}public void setRegisterDate(Date registerDate) { this.registerDate = registerDate;}public Date getBirthDate() {return birthDate;}public void setBirthDate(Date birthDate) {this.birthDate = birthDate;}public long getMobileNumber() {return mobileNumber;}public void setMobileNumber(long mobileNumber) { this.mobileNumber = mobileNumber;}public String getInterserting() {return interserting;}public void setInterserting(String interserting) { this.interserting = interserting;}public InputStream getPersonImage() {return personImage;}public void setPersonImage(InputStream personImage) { this.personImage = personImage;}public String getComeFrom() {return comeFrom;}public void setComeFrom(String comeFrom) { eFrom = comeFrom;}public String getResume() {return resume;}public void setResume(String resume) {this.resume = resume;}private String loginName;private String loginPassWord;private int personType;private String findOutPassWordAsker;private String passWordAnswer;private int personSex; // 1 代表男, 0 代表女private int collageType;private String IDCardNumber;private String emailAddress;private Date registerDate;private Date birthDate;private long mobileNumber;private String interserting; // 1,2,3,4,5private InputStream personImage;private String comeFrom;private String resume;private List intersertingItems;public List getIntersertingItems() {intersertingItems=new ArrayList();String items[]=interserting.split("\\,");for(int loopIndex =0; loopIndex < items.length; loopIndex++){ intersertingItems.add(items[loopIndex]);}return intersertingItems;}}。
精通ASP.NET2.0的Web2.0 电子教程(下)

2021/8/23
2
12.1.1 XML文档的组成
• XML文档的组成比较复杂,它可以包括XML声明、元素和标记、属性、注释、 处理指令等内容。
• 1.XML声明:通常情况下,XML文档都包含一个XML声明,且该声明出现在 XML文档的第一行。但是,该声明不是必须的。XML声明中可以声明文档的 版本号、编码等声明。
2021/8/23
22
12.6 站内短信息管理
• 本小节主要介绍应用程序XMLBBS中与短信息相关的内容,如收件箱、发件 箱、查看短信息、发送短信息、跟踪短信息等。
2021/8/23
23
12.6.1 收件箱
• 收件箱由页面BrowseMessage.aspx实现,它的代码隐藏文件为 BrowseMessage.aspx.cs。该页面实现功能如下所示。
2021/8/23
14
12.4.1 定义操作XML数据库的参数
• 在介绍操作XML数据库方法之前,首先介绍这些方法所使用的参数 (Paramter)。在此,笔者把这些方法操作XML数据库时所使用的参数称为 XML参数。每一个参数都被定义为XmlParamter类型。该类主要包含的属性为: Name、Value和Direction,分别表示参数的名称、值和方向。
2021/8/23
1
12.1 XML概述
• XML(Extensible Markup Language,可扩展性标志语言)是一种简单 的数据存储语言。是从标准通用标记语言(SGML)中简化修改出来 的。使用一系列简单的标记描述数据,并且这些标记非常方便建立。 虽然XML占用的空间比二进制数据要占用更多的空间,但是XML极其 简单易于掌握和使用。
• Admin目录,主要包含超级管理员使用的后台管理页面,如注册新用户、用户 管理等页面。
第2章 ASP基础和应用环境配置

安装IIS 安装IIS
IIS: Server, IIS:Internet Information Server, Internet信息服务 信息服务。 即Internet信息服务。 Microsoft公司开发的Web服务器应用 公司开发的Web 是Microsoft公司开发的Web服务器应用 程序。 程序。 2003中包含 中包含IIS 6.0。 在Windows Server 2003中包含IIS 6.0。
应用程序的目录和结构 2.3.2 应用程序的目录和结构
文件类型 .html .aspx HTML页面文件 Web窗体页由两部分组成,即视觉元素(HTML、服务器控件 和静态文本等)和该页的程序代码。Visual Studio将这两个组 成部分分别存储在一个单独的文件中。.aspx文件保存Web窗 体中页中的视觉元素信息 Web窗体页中保存程序代码的文件,又称为代码隐藏类文件 C#类模块的代码文件 Global.asax文件是的应用程序文件,它是一个可选文 件,其中包含响应或HTTP模块引发的应用程序级别 事件的代码 Web.config文件向它所在的目录和所有子目录提供配置信息 资源文件,通过在资源文件中存储数据,无需重新编译整个 应用程序即可更改数据 样式文件,为Web窗体页的视觉元素设定初始显示样式 描述
配置和管理IIS 配置和管理IIS
【例】C:\Inetpub\wwwroot目录下创建一个test.html文件,内容如下: C:\Inetpub\wwwroot目录下创建一个test.html文件,内容如下: 目录下创建一个test.html文件 <HTML> <HEAD> <TITLE> HTML文件标题.</TITLE> </HEAD> <BODY bgcolor="#00FFFF"> <!-- HTML文件内容 --> <font face="黑体" size="4">设置字体. </font> <p><b>加粗</b> <i>倾斜</i> <u>下划线</u></p> </BODY> </HTML> 在IE浏览器地址栏中输入如下地址: IE浏览器地址栏中输入如下地址: 浏览器地址栏中输入如下地址 http://localhost/test.html
WEB 2.0 简介

1.1.3 AJAX概述 概述
Ajax的核心是JavaScript对象 XMLHttpRequest。该对象在Internet Explorer 5中首次引入,它是一种支持异步请求的技术。 简而言之,通过XMLHttpRequest对象, JavaScript可以向服务器提出请求并处理响应, 而不阻塞用户。Ajax与服务器交互的过程如图 Ajax 1-1所示。
第1章 Web 2.0下JSP和Ajax 章 下 和
内容摘要
Web 2.0时代的个性化不是原来的网页个性化, 而是服务个性化,我们面对的将是一个全新的个性 化互联网。随之而来就是Web 2.0时代的Web程序编 程也要发生变化,Ajax的出现改变了传统Web编程 的模式。大量的工作正在悄悄的移植到客户端,We b 2.0时代的Web程序正在以新的方式出现。而JSP 和Ajax技术的结合,是跨平台和负载平衡的结合。 在本章中,将首先介绍Web 2.0的概念、JSP概 念和Ajax概念,接下来介绍JSP+Ajax结合的意义, 然后介绍JSP的运行环境和开发环境,最后以案例的 方式介绍了Ajax+JSP的使用。
学习目标
理解Web 2.0的产生意义和特点 掌握JSP概念 掌握Ajax概念 熟练掌握构建JSP运行和开发环境 连接JSP和Servlet的区别 JSP Servlet 掌握开发Ajax+JSP案例流程
1.1 WEB 2.0与JSP、AJAX简介 与 、 简介
自从Web 2.0的概念提出以来,经过几年的发展, Web 2.0已经成为互联网行业最受关注的词汇。Web 2.0 是一种以XML、RSS、AJAX等技术为基础,融合了Web 1.0的应用模式及新出现的Blog、SNS、Wiki等多种多对 多互动应用服务模式,来满足不同用户社会化、人性化 需求的服务平台。 Web 2.0的出现改变了传统Web开发模式。在传统 的Web开发中,可以使用JSP、PHP和ASP的任一种We b技术,构建Web程序,但对于Web客户端技术都是鞭长 莫及,导致大量的工作都是在服务器端完成,客户端仅 仅只是显示数据的层面,从而形成了胖服务器端和瘦客 户端现象。而Web 2.0技术的出现,改变了这种现状。 可以利用Ajax技术在客户端创建一个中间层,将服务器 端一些工作移植到客户端。
祁长兴《ASP.NETweb程序设计教程》PPT第二章

2.1.1 HTML基本语法
例2-1 运行效果
2.1.2 文字段落标记
1. 文字样式标记:包括文字的字体、字号和颜色,一般使用 <font>标记来实现。具体格式如下:
<font size=数字 face=字体名 color=颜色>文字内容</font>
“size”表示字号,“数字”表示字号的大小,最大为7, 最小为1,默认字号为3。 “face”表示字体,默认字体为宋体。 “color”表示文字的颜色,默认颜色为黑色。
2.1.1 HTML基本语法
但也有些标记只需单独使用就能完整的表达意思,称之为 单标记。常用的单标记主要有换行标记<br>、水平线标 记<hr>等。 <标记> <标记 属性1=属性值1 属性2=属性值2 ……>
2.1.1 HTML基本语法
HTML文档分文档头和文档体两部分,在文档头里,对这 个文档进行了一些必要的定义,文档体中才是要显示的各 种文档信息。一个完整的HTML文件的基本格式如下: <html> <head> <title>网页的标题</title> </head> <body> 文档主体,正文部分 </body> </html>
<sup>
<strong>
</sup>
</strong>
上标
特别强调
<sub>
<address>
</sub>
下标
</address> 显示邮件地 址
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
2.2 Web窗体页语法
Web窗体页不但可以包括静态内容,而且可以包含使用“<% %>”或“<script></script>”标记的内容。这些标记使用不 同的语法结构,其具体包括如下: 代码呈现块和代码声明块语法。 服务器控件语法(包括HTML服务器控件和Web服务器达式语法
声明性表达式语法是 2.0新增的语法,它可以在分析 Web窗体页之前将表达式的值替换到页中。使用声明性表达式 可以获取配置文件Web.Config中连接字符串的值,也可以从 资源文件中获取当前本地化的值。声明性表达式语法如下: <%$ 表达式 %>
2.2.4 数据绑定语法
@Implements指令指定当前文件(如Web窗体页、用户控件等) 需要实现的.NET框架类库中的接口。如果用户在文件中需要 实现接口时,用户必须在<script>标记中实现接口所需要的 方法和属性。若文件需要实现多个接口,则可以在该文件上 多次使用@Implements指令。@Implements指令只包含一个属 性:interface。该属性表示当前文件需要实现的接口的名称。 声明@Implements指令的语法如下: <%@ Implements interface="MyValidInterfaceName" %>
@Reference指令将指定的页或用户控件链接到当前页或用户 控件,即在指定的页或用户控件和当前页或用户控件之间建 立动态连接。声明该指令的语法如下: <%@ Reference Page="页的路径" Control="用户控件的路径" virtualPath="文件的虚拟路径" %>
2.1.5 母版页指令@Master
提供了两种组织Web窗体页中代码的方式:内联代码 分离方式和代码隐藏分离方式。用户在创建Web窗体页时,可 以设置页的代码组织方式,如图2.6所示。如果用户选中了 【将代码放在单独的文件中】复选框,则页的代码组织方式 为代码隐藏分离方式,否则为内联代码分离方式。
2.3 Web窗体页运行过程
分析器或编译器在分析或编译母版页(.master)时,可以通 过@Master指令设置分析器和编译器的属性。该指令只能在母 版页上使用,且一个母版页只能包含一条@Master指令。声明 @Master指令的语法如下: <%@ Master attribute="value" [attribute="value"...] %>
2.2.6 服务器端包含语法
服务器端包含语法能够将指定文件的内容包含或插入到文件 中。它的语法如下: <!-- #include file|virtual="filename" --> 其中,file和virtual是一对互斥属性。file属性指定被包含 文件的的物理路径;virtual属性指定被包含文件的虚拟路径。 下面的代码示例介绍了包含名称为MyScript.js的脚本文件的 方法。 <!-- #Include File="MyScript.js" -->
2.3.2 载入页面
Web窗体页初始化之后,分析器或编译器将载入页。 在此过程中,如果当前请求是回发请求(不是第一次请求), 则读取页和控件的视图状态(ViewState)中读取其状态,并 将状态的值应用到页和控件。在此过程中,页将触发 Page_Load事件。该事件读取并更新控件属性。
2.2.7 服务器端注释语法
服务器端注释语法允许将代码注释,或内容嵌入到Web窗体页, 或用户控件的任何位置(除了被<script>标记元素标记的代 码块内部)。被注释的代码或内容将不被执行或呈现。服务 器端注释语法如下: <%-- 注释的内容或代码 --%>
2.2.8 内联代码分离和代码隐藏分离方式
2.2.2 服务器控件语法
服务器控件语法包括Web服务器控件语法和HTML服务器控件语 法。其中,Web服务器控件能够动态生成HTML用户界面(UI) 并响应客户端请求。声明这些控件的语法如下: <tagprefix:tagname id="OptionalID" attributename="value" eventname="eventhandlermethod" runat="server" />
2.1.1 页指令@Page
分析器或编译器在分析或编译页时,可以通过@Page指令设置 分析器和编译器的属性。该指令只能包含在文件扩展名 为.aspx的文件中,声明其语法如下: <%@ Page attribute="value" [attribute="value"...] %> @Page指令只能使用在Web窗体页(.aspx)中,且每个页只能 包含一条@Page指令。当Web窗体页使用该指令时,它至少要 包含一个属性。
2.1.3 注册指令@Register
@Register指令提供了引用用户控件或自定义控件的方法,并 引用这些控件的文件(页或者控件)能够使用被引用的控件。 换句话说,该指令创建一个标记前缀,实现被引用的控件和 其引用文件之间的关联。最终,使得控件能够在其引用文件 中呈现出来。
2.1.4 引用指令@Reference
2.1 指令
指令是以字符“@”开头。分析器或编译器在分析或 编译页(包括窗体页和母版页)、用户控件或其他资源文件 时,页、控件或文件可以通过指令指定编译器的属性。 当分析器或编译器在处理页、控件或文件时,这些设置生效。 通常,这些指令需要包含在页、控件或文件的开头处。每个 指令都可以包含一个或多个属性(与值成对出现)。
2.2.1 代码声明和代码呈现语法
代码声明块必须定义在<script>标记中,并且必须使用 “runat=server”属性进行标记。代码声明块语法如下: <script runat="server" language="codelanguage" Src="pathname"> 代码... </script>
2.1.7 上一页类型指令@PreviousPageType
@PreviousPageType指令提供了获取上一页(当前页的Page对象的PreviousPage属 性的值)的强类型的方法。它只能使用在Web窗体页(.aspx)上,声明该指令的 语法如下: <%@ PreviousPageType attribute="value" [attribute="value"...] %> @PreviousPageType指令包含两个属性:TypeName和VirtualPath。其中, TypeName属性指定上一页的类型的名称;VirtualPath属性指定生成强类型引用的 文件的路径,它的值为相对路径。一般情况下,TypeName和VirtualPath属性不能 同时使用。下面的代码示例设置了生成强类型的文件的VirtualPath属性的值为 “~/OtherPreviousPageType.aspx”。 <%@ PreviousPageType VirtualPath="~/OtherPreviousPageType.aspx" %>
2.1.6
母版页类型指令@MasterType
@MasterType指令提供创建对该母版页(.master)的强类型 引用的方法。声明该指令的语法如下: <%@ MasterType attribute="value" [attribute="value"...] %> @MasterType指令包含两个属性:TypeName和VirtualPath。 其中,TypeName属性指定母版页的类型的名称;VirtualPath 属性指定生成强类型引用的文件的路径,它的值为相对路径。
2.1.10 程序集指令@Assembly
@Assembly指令将程序集(.dll)链接到当前页,使得当前页 可以使用程序集中的类和接口。声明该指令的语法如下: <%@ Assembly Name="assemblyname" %> <%@ Assembly Src="pathname" %>
2.1.11 执行指令@Implements
第2章
Web窗体页彻底透析
Web窗体页文件的扩展名为“.aspx”。创建一个Web 窗体页方法很简单:用户只需将现有的HTML文件的文件扩展 名修改为“.aspx”即可,不需要修改该文件的任何代码。这 一小节将详细介绍Web窗体页相关内容,如指令、Web 窗体页语法、Web窗体页运行过程等。
2.3.3 处理事件
Web窗体页载入之后,将处理页的回发事件。在此过程中,如 果当前请求是回发请求(不是第一次请求),则将触发页或 控件的定义的事件处理程序。如Button控件的Click事件等。 注意:在处理回发事件之前,如果页包含了需要执行验证操 作的控件,那么页首先检查页和各个验证控件的IsValid属性 是否为true。如果为true,则处理回发事件,否则行处理回 发事件。
数据绑定表达式能够将控件属性绑定到数据容器值。其通常 放置在“<%# %>”标记元素之中。当其父控件的 DataBind()方法被调用时,将计算标记中表达式的值。其中, 数据绑定表达式可以包含在服务器控件的“属性/值”对的值 一侧,也可以放置在Web窗体页中的任何位置。
2.2.5 对象标记语法
对象标记语法能够在Web窗体页中声明或创建COM或.NET Framework中的对象,即声明或创建变量的实例。服务器端对 象标记语法存在3种方式,