学习ASP.NET开发所使用的C#语言,掌握基本语法、语句。
学习C#数据类型、基本语句结构、和网页设计相关的基础。
步骤1:认识C#数据类型
C#将数据类型分为两大类,即值类型和引用类型。这两种类型的区别在于:值类型存储的是自身的数值,引用类型存储的是对数值的引用。一个值类型变量保存对应的实际值。
C#有15种预定义类型。其中13种是值类型,其他两种是引用类型。C#的预定义类型包括整型、浮点型、布尔型和字符型等。
1.整型
C#有8种整型,可以用来表示全部的数字即整数。表2-1列出了相关整型。同时也列出了C#和.NET的类型,以主相关类型所占的类型值的范围。
表2-1 整型
例如:
int Number=10;
long LongNumber=-1234;
ulng UlongNumber=9;
2.浮点型
C#有3种浮点型来表示浮点数,表2-2列出了相关的内容。
表2-2 浮点型
示例:
Float FloatNumber= 1.5f;//当赋值给浮点型时,必须在结尾加一个f或F字符。
decimalDecimal Number=1234.5678m;//当使用小数类型时,需要在结尾加上m或M。
C#中的布尔型有true和false两种,如表2-3所示。
表2-3 布尔型
示例:
Bool myBool=true;
3.字符型
在C#中,char数据类型存储的是单独的字符值,如表2-4所示。
表2-4 字符型
示例:
charOneChar=’W’;
步骤2:认识程序控制结构
1.顺序结构
顺序结构语句按顺序从上到下依次执行,如:
stringxm;
xm=Test Box.text;
Response.Write("请输入你的姓名是:"+xm);
程序从左至右、自顶向下的顺序执行这些语句,即顺序结构。
顺序结构是一种线性结构,也是程序设计中最简单、最常用的基本结构。
特点是:在该结构中,各语句按照各自出现的先后顺序,依次逐块执行。一个程序通常可分为三个部分:输入、处理和输出。在顺序结构中,最常出现的赋值语句。赋值语句分为简单赋值语句和复杂的赋值语句。
(1)简单赋值语句。简单赋值语句实现对变量的赋值操作,指由一个赋值操作符构成的赋值语句。格式为:
变量=表达式;
说明:
①“变量”是被赋值的对象,计算表达式的值并赋值给“变量”。变量可以值类型的变量或者对象变量等。特别要注意的是,不能将符号常量当作变量放在赋值号左边。例如:
②“表达式”可以是单个的变量、常量或方法调用,因为单个的变量、常量或方法是表达式的特殊形式。例如:int a,b=36;
③“变量”与“表达式”数据类型一致,或者“表达式”应该能够隐式或显式转换为“变量”的数据类型。
(2)复杂的赋值语句。复杂的赋值语句是使用+=、-=、*=、/=等运算符构成的赋值语句或者是连续赋值语句,这种语句首先需要完成特定的运算然后再进行赋值运算操作。例如:
上面第二行代码是复合赋值语句,展开为:k=k+1;
连续赋值语句是在一条语句中使用多个赋值运算符进行赋值的语句,这种语句可以一次为多个变量赋予相同的值例如int x,y,z;x=y=z=1
上面的代码中将1赋值给z变量,z变量的值赋值给y变量,y变量的值赋给x变量。
2.选择结构
(1)if语句。if语句用在程序中测试布尔逻辑条件,如果条件为true,就执行包含的那个分支语句。if语句的语法如下:
if(条件表达式)
语句1;
else
语句2;
如果条件表达式的逻辑值为true(真),就执行语句1,否则就执行语句2。示例:要求得A,B两个数中的最大数,则可以用如下if语句实现。
(2)switch语句。和if语句相比,switch语句有一个控制表达式,而且内含语句按它们所关联的控制表达式的常量运行。
控制表达式允许的数据类型为sbyte byte short ushort uint long ulong char string 或者枚举类型。只要使其他不同数据类型能隐式转换成上述的任何类型,用它作为控制表达式也不错。
对switch语句执行顺序说明:
①控制表达式求值。
②如果case标签后的常量表达式符合控制语句所求出的值,内含语句被执行。
③如果没有常量表达式符合控制语句,在default标签的内含语句被执行。
④如果没有一个符合case标签,且没有defaults标答,控制转向switch语段的结束端。
switch示例:sex为性别代码,“1”为男性,“0”为女性,其他值为“不确定”。则实现相应判断的switch语句可以这样写:
3.循环结构
(1)while语句和do-while语句。
①while循环语句,可以描述为:当条件为真时,进行操作。语法是:
while(表达式)语句
示例:
示例运行结果如图2-1所示。
图2-1
②do-while语句,适用于需要先执行操作后再进行判断的场合。
语法为:
do语句 while表达式
其中的表达式就是返回值的任何语句。
示例:
do-while语句示例运行结果,如图2-2所示。
图2-2
(2)for语句和for each语句。
①for语句的语法为:
循环控制变量初始化是指在执行第一次循环前要计算的表达式(通常把一个局部变量初始化为循环计数器);
循环控件条件是在每次执行新的循环前要测试的表达式(当它为逻辑真时,才能执行下一次循环,为假时,循环结束);
循环递增计数器是每次循环完要计算的递增循环计数器。For循环是预测试循环,因为循环条件是在执行循环语句前计算的,如果循环条件为假,循环语句就根本不会执行。
For循环适用于一个语句或语句块重复执行预定的次数。下面的例子给出了for循环的典型用法,这段代码输出从0至9的整数:
for语句示例运行结果,如图2-3所示。
图2-3
②foreach语句。foreach语句是C#新增的循环语句,也是目前非常受程序员欢迎的一种循环。foreach循环可以遍历集合中的每一项,用于数据的遍历及搜索等操作。
语法为:
下面给出一个具体的例子。
foreach循环语句示例运行结果如图2-4所示。
图2-4
步骤3:认识ASP.NET的内置对象
1.Page对象
在编程实践中,经常用到的Page对象的属性如下:
◎IsPostBack:获取布尔值。若IsPostBack的值为True,则表示当前网页是由于客户端返回数据而加载的。
◎Is Valid:获取布尔值。若Is Valid的值为True,则意味着网页上的验证控件全部验证成功,否则表示至少有一个验证控件验证失败。
在ASP.NET网页开始载入到被完全写入浏览器的过程中,产生的与Page对象有关的主要事件有三个,它们分别是Init、Load和Un Load。
ASP.NET网页执行时,首先被初始化,此时会触发Page对象的Init事件,然后网页被加载并触发Page对象的Load事件(Init事件与Load事件的主要区别在于,对于来自浏览器的浏览请求而言,网页的Init事件只触发一次,而Load事件则可能触发多次);之后将是来自Server端控件的各种事件(如果这些事件存在的话),最后是Page对象的Un Load事件。
在编程实践中,Init事件通常用来设置网页或控件属性的初始值。而Load事件主要用于在按用户要求回送信息时,对控件属性进行设置。至于Un Load事件,则主要用于关闭文件、数据库连接或释放对象等。
2.Response对象
在编程实践中,经常用到Response对象,Response对象主要用于生成HTML内容并送交浏览器。
(1)生成HTML文档内容。在ASP网页中,利用Response对象将信息回送浏览器的代码是十分常见的。在ASP.NET网页中,同样可以利用这种方法将信息写入浏览器。
(2)将特定文件的内容写入HTML文档。当需要将大量信息写入浏览器时,可先将这些内容写入一个文本文件,然后再利用Response.WriteFile()方法实现写入。
(3)从当前网页转向其他网页。当需要根据某个或某些条件转向特定的网页时,可使用Response对象的Redirect()方法。
(4)结束程序运行。Response对象的End()用于结束程序运行。
(5)在客户端磁盘中写入文件以存储某些信息。可以利用Response对象将一些简单的信息以Cookie文件的形式存入客户端。当浏览器请求某一网页时,Cookie中的信息将被自动发往服务器端,服务器可提取Cookie中的信息。此外,需要指出的是,Cookie是基于服务器的,即A服务器不能读取由B服务器生成的Cookie。
在默认的情况下,Cookie只存在客户端与服务器会话的期间内,不过,如果有需要的话,可以任意设置Cookie的生存期。
需要指出的是,Cookie能否正常工作,与客户端的状况密切相关。因为,如果浏览者禁止服务器将Cookie写入本地计算机,或者将已经存在于本地的Cookie删除,则基于Cookie的应用程序将可能不能正常运行。就Cookie容量而言,一般浏览器都将Cookie的大小限制为4098B,这意味着,需要存储大量数据时,不能使用Cookie。
(6)Response对象属性:
◎Buffer Output:给出或设置是否启用缓冲处理。当Response.Buffer Output为True时,服务器将先完成对所有Response的处理,然后才将结果发送至浏览器。
◎Charset:给出或设置字符编码方式。
◎Context Type:给出或设置输出的HTTP内容类型。默认为text/HTML,若要输出GIF图片,可设置为image/GIF。
◎IsClientConnected:用于判断客户端是否仍然与服务器连接。
(7)Response对象方法。在编程实践中,经常用到Response对象的下列方法:
◎ClearContext():清除所有存放在缓冲区中尚未发送到客户端的输出。
◎Close():关闭与客户端的连接。
◎End():结束执行ASP.NET网页,然后将缓冲区中的所有输出发送到客户端。
◎Flush():将缓冲区中的所有输出发送到客户端,然后清空缓冲区。
◎Redirect(URL):将浏览器重定向到地址为URL的网页。
◎WriteFile(filename):将指定的文件写入HTML文档。
◎Write(字符串表达式):将字符串表达式写入HTML文档。
3.Request对象
Request对象主要用于获取来自客户端的数据,如用户填入表单的数据、保存在客户端的Cookie等。可将Request与Response视为一对对象。
在ASP网页中,Request最重要的用途是以Request("表单域名称")的格式获取用户在表单中输入的数据。在ASP.NET网页中,仍然可以沿用这种方式。但是,由于ASP.NET允许用户直接访问服务器控件的属性,因此,方式Request("表单域名称")的使用日见减少。
但是,这并不表明意味着可以完全抛弃Request对象,因为借助于这个对象,可以获取许多与网页密切相关的数据:
(1)获取地址、路径和文件名等信息。
(2)获取服务器端环境变量。服务器端环境变量可提供服务器与客户端的许多重要参数。由于环境变量数目众多,不宜一一列举,故提供下列环境变量取值的程序。
(3)获取客户端浏览器信息。Request对象的Browser属性可以获取Http-BrowserCapabilities对象,该对象中包含有浏览器信息。
(4)读取客户端Cookie文件。前面已经提到过,可利用Response对象将一些简单的信息以Cookie文件的形式存入客户端。当服务器需要提取存放在客户端Cookie中的数据时,就必须使用Request对象。
4.Server对象
在编程实践中,经常用到的Server对象的属性如下:
◎MachineName:获取服务器计算机名称。
◎Script TimeOut:指定Script的超时时间。
Server对象所提供的是服务器方的基本属性和方法。
在编程实践中,经常用到的Server对象的方法如下:
◎HtmlEncode():对字符串进行HTML编码,以免该字符串被解释为HTML语法。
◎Html Decode():Html Encode()方法的逆运算。
◎UrlEncode():对字符串进行Url编码,将其转换为特殊的字符串。当Url中存在会使系统错误解读的字符时,应使用此方法。
◎UrlDecode():HtmlEncode()方法的逆运算。
◎UrlPathEncode():只对Url字符串中的路径部分进行Url编码。
◎Map Path():将虚拟路径转换为实际路径。
◎Execute():执行另一个ASP.NET网页,执行完成后返回原来的网页继续执行。该方法提供了与函数调用类似的功能。
◎Transfer():终止当前网页,执行新的网页(即实现重定向)。
5.Application对象与Session对象
(1)Application对象。Web站点事实上是一个多用户的应用程序。通常用户之间“老死不相往来”,但在某些情况下,用户需要知道另外一些用户的情况(例如,在基于Web的聊天室中,聊天者需要知道当前有哪些用户在线)。可供所有在线用户共享的信息应放在Application对象中。
可以把Application对象视为公共场所中的公告牌,任何一个用户写入其中的信息都可以被其他用户看到。
从技术的层面上看,网站中所有的ASP.NET程序构成了一个Web应用系统。该系统的默认生命期,始于Web站单击始运行时,终于站点停止运行时(注意,Web应用系统被第一个浏览者激活后,生存时间与有无浏览者在线并无直接关系)。在此期间,任何一个访问者都可以读取或改写Applicaton对象中的内容。
当第一个用户访问网站时,将触发Application对象的OnStart事件,而站点服务终止时,将触发Application对象的On End事件。显然这两个事件的处理程序不宜放在一般的ASP.NET网页中(因为并不是每个用户都触发Application对象的OnStart事件,任何用户也无法直接触发Application对象的On End事件)。
在ASP.NET中,上述两个事件的处理程序应放置在名为Global.aspx中。该文件必须放在站点的主目录中。
在Application对象的OnStart事件的处理程序中,通常用Add方法来添加Application变量。
在Application对象的OnEnd事件的处理程序中,通常进行释放Application变量的操作。
一个包含Application对象事件处理程序的Global.aspx文件内容如下:
Session对象也是用于记录信息的。但与Application对象不同的是,Session对象为某一用户私有。这意味着,在线的用户A不能访问同时在线的用户B的Seesion对象。
Session对象也有生存期。在默认的情况下,如果浏览器在20分钟内没有再访问网站中的任何网页,则该网站为其建立的Session对象将自动释放。
在编程实践中,Session对象通常用来在不同的ASP.NET网页间传递信息。
(2)Session对象。
①Session对象的事件。当浏览者首次启动浏览器访问网站时,将触发Session对象的Start事件,而在特定的时间(默认为20分钟)内没有访问网页或者以规定的方法主动释放Session对象时,将触发Session对象的End事件。
在ASP.NET中,上述两个事件的处理程序应放置在名为Global.aspx中。该文件必须放在站点的主目录中。
在Session对象的Start事件的处理程序中,通常用Add方法来添加Session变量。
在Session对象的End事件的处理程序中,通常进行的操作是将Session变量的当前值保存到文本文件或数据库中。
②Session对象的重要属性如下:
◎Is New Session:当浏览者首次启动浏览器浏览网页时,该属性返回值为True。而浏览者刷新网页或进入网站中的其他网页时,该属性返回值为False。
◎SessionID:给出能唯一确定一个连接者的标识码。
◎TimeOut:给出或设置Session对象的失效时间(单位为分钟)。在由TimeOut属性设置的时间内,若浏览者未访问网页,则Session对象将被自动释放。TimeOut属性的默认值为20分钟。
③Session对象的重要方法:
◎Abandon():强制结束Session对象。调用此方法将触发Session对象的OnEnd事件。由于Session对象存在于服务器端内存中,如果使用了Session对象,且在线用户较多,则服务器的负担将便得比较沉重。为了减轻服务器的负担,应遵循两条原则,一是尽量少用Session对象;二是应及时释放不再使用的Session对象。
◎Clear():释放Session对象中的所有非对象变量。
许多网页可以提供在线用户数量、各用户的某些个人信息等。这些功能可以用Session.SessionID来实现。因为Session.SessionID可以唯一标识每一个用户,因此,就可以通过编程,在Application对象中建立一个用户列表,之后进行处理,就可以获得很多有趣、实用的功能。
步骤4:Web常用控件
1.Label控件
Label控件用于在页面上显示文本,该文本是可编程的。该控件常用属性如表2-5所示。
表2-5 Label控件常用属性
控件其他属性参考表2-6(其他控件的同名的属性的意义也相同),对控件的编程实际上就是对属性的赋值或获取。(www.xing528.com)
表2-6 控件标准属性
2.Button控件
Button控件是命令按钮,该按钮和HTML下的按钮形状相同,但功能远远超越html下的按钮。Button常用属性如表2-7所示。
在页面上创建多个按钮控件,可以编写事件程序来控制命令按钮被单击时执行的动作。3.TextBox控件
表2-7 Button控件常用属性
TextBox控件用于创建用户可输入文本的文本框,其常用属性如表2-8所示。
表2-8 TextBox控件常用属性
(续表)
4.Hyper Link控件
Hyper Link控件用于创建超链接,常用属性如表2-9所示。
表2-9 Hyper Link控件常用属性
5.Check Box控件
Check Box控件是复选框控件,常用属性如表2-10所示。
表2-10 CheckBox控件常用属性
6.Check Box List控件
Check Box List控件用于创建多选的复选框组。每个Check Box List控件中的可选项都是由ListItem元素定义,常用属性如表2-11所示。
表2-11 CheckBox List控件常用属性
7.RadioButton控件
RadioButton控件是单选按钮控件,用属性如表2-12所示。
表2-12 RadioButton控件常用属性
8.RadioButton List控件
RadioButton List控件用于创建单选按钮组。RadioButton List控件中的每个可选项是通过ListItem元素来定义,常用属性如表2-13所示。
表2-13 RadioButton List控件常用属性
(续表)
9.Drop Down List控件
Drop Down List控件是下拉列表控件,控件中的每个可选项都是由ListItem元素定义,常用属性如表2-14所示。
表2-14 DropDown List控件常用属性
10.ListBox控件
ListBox控件用于创建多选的下拉列表。ListBox控件中的每个可选项目是通过ListItem元素定义,常用属性如表2-15所示。
表2-15 ListBox控件常用属性
11.Image控件
Image控件是图像控件,常用属性如表2-16所示。
表2-16 Image控件常用属性
12.Calendar控件
Calendar控件用于在浏览器中显示日历。该控件可显示某个月的日历,允许用户选择日期,也可以跳到前一个或下一个月,常用属性如表2-17所示。
表2-17 Calendar控件常用属性
(续表)
13.Panel控件
Panel控件用作其他控件的容器。此控件常用于以编程方式生成控件,或显示和隐藏控件组,其常用属性如表2-18所示。
表2-18 Panel控件常用属性
14.Grid View控件
Grid View控件,控件以表格的形式显示数据源中的值,该表格中的每一列代表一个字段,每一行代表一条记录。使用Grid View控件可以选择和编辑这些项,也可以对它们进行排序。用Grid View控件,可以显示、编辑和删除来自多种不同的数据源(包括数据库、XML文件和公开数据的业务对象)的数据。Grid View是在数据库等应用中功能强大的使用面最广的较为复杂的控件,其常用属性如表2-19所示。
表2-19 Grid View控件常用属性
(续表)
(续表)
在程序设计中,需要应用到该控件较多不同的事件,常用的事件如表2-20所示。
表2-20 Grid View控件常用的事件
(续表)
15.Data List控件
Data List控件用于创建模板化的列表数据,可以显示诸如一行中有多列的内容,可用于任何重复结构中的数据,如表格等,常用属性如表2-21所示。
表2-21 DataList控件常用属性
(续表)
16.Repeater控件
Repeater控件用于显示被绑定在该控件上的项目的重复列表,功能和Data List控件类似。Data List控件以表的形式呈现数据,例如,将数据记录排成列或行的形式。可以对DataList控件进行配置,使用户能够编辑或删除表中的记录。DataList控件与Repeater控件的不同之处在于:Data List控件将项显式放在HTML表中,一行可以有多条记录,就像图片列表一样,分页功能需要手写代码。
而Repeater控件则不然,Repeater控件使用数据源返回的一组记录呈现只读列表,Repeater控件不指定内置布局(即模板布局),可以使用模板创建Repeater控件的布局,其常用属性如表2-22所示。
表2-22 Repeater控件常用属性
步骤5:常用控件综合应用
在熟悉和了解控件属性的基础上,通过常用控件综合应用掌握控件的使用。本实例侧重于实现网页设计中常用的单选按钮、多选按钮、组合框、列表框、图片、日期、文本框、标签和命令按钮等功能。设计界面如图2-5所示,当用鼠标单击表格左列控件时,右边对于的标签将显示相应的控件属性的Text属性值(图片控件显示ImageUrl的值)。
图2-5
1.单选按钮程序设计(RadioButton1、RadioButton2、RadioButton3)
功能:获取并显示选择项的值。
(1)要保证实现单选,涉及的单选控件(RadioButton1、RadioButton2、RadioButton3)的属性Group Name的值要一致,这里均取名为gr1;选择AutoPost Back属性值为true,保证数据回传。
(2)双击RadioButton1控件(冰箱),打开代码窗口,在protected void RadioButton1_CheckedChanged(object sender,Event Args e)方法中,输入:Label1.Text=" 您选择了:"+RadioButton1.Text;
完整的代码为:
(3)双击RadioButton2控件(电视),打开代码窗口,在protected void RadioButton2_CheckedChanged(object sender,Event Args e)方法中输入代码,完整的代码如下:
(4)双击RadioButton3控件(电脑),打开代码窗口,在protected void RadioButton3_CheckedChanged(object sender,Event Args e)方法中输入代码,完整的代码如下:
2.复选按钮程序设计(Check Box1、Check Box2、Check Box3)
功能:获取并显示选择项的值。
复选按钮(这里是Check Box1、Check Box2、CheckBox3)可以多选,也可不选,当某复选按钮被选中后,提示被选中的按钮的Text属性值,如果同时选中多个,那么也可获取所选中按钮的Text值。
(1)在代码文件中建立选中的方法Check Box_click(CheckBox cb1,Check Box cb2,CheckBox cb3),用来判断和取得相应按钮的Text值并返回。程序如下:
(2)选中复选框控件,设置AutoPostBack属性值为true。
(3)用鼠标分别双击这3个复选框控件,打开相应的事件对于的方法:
3.组合框(Drop Down List1)
功能:获取并显示选择项的值。
(1)设置AutoPostBack属性值为true。
(2)双击DropDown List1,打开事件对于的方法,并输入相应的代码程序:
4.列表框(ListBox1)
功能:获取并显示选择项的值。
(1)设置AutoPost Back属性值为true。
(2)双击ListBox1,打开事件对于的方法,并输入相应的代码程序:
5.图片控件(Image1)
功能:现实图片文件。
选中Image1后,双击Load事件,打开protected void Image1_Load(object sender,Event Args e),编写代码:“Label5.Text=Image1.ImageUrl;”,完整的程序:
6.日期控件(Calendar1)
功能:获取所选日期。
双击日期控件(Calendar1),在protected void Calendar1_SelectionChanged
(object sender,Event Args e)
在其中输入代码:Label6.Text=Calendar1.Selected Date.Date.ToString("yyyy-MM-dd");完整的程序代码为:
7.文本框(TextBox1)和命令按钮(Button1)
功能:在文本框中输入文字,双击命令按钮,显示输入的文字信息。双击命令按钮(Button1),在打开的事件中输入程序,完整的代码为:
步骤6:认识网站基础
1.ASP.net网站类型
(1)文件系统网站:开发者机器上不需要安装IIS,可以用ASP.NET Development Server来进行测试。不过ASP.NET Development Server上的网站或虚拟目录不能在其他机器上访问,它运行时随机选择一个大于1024的端口作为Web服务器的端口。文件系统网站只适合开发阶段使用。
(2)本地HTTP网站:本地HTTP网站需要安装IIS,就是利用IIS作为容器运行。常用在测试和建设发布后的网站。
(3)FTP网站:将网站建立在具有读写权限的FTP服务器上,并在FTP服务器上创建和编辑网页。
(4)远程站点网站:将站点建立在已经安装IIS并配置有Microsoft FrontPage服务器扩展的远程电脑上。网站的网页和文件夹存储在:系统盘:\Inetpub\wwwroot下,并通过远程计算机上的IIS运行、测试网页。这种适用于多个开发人员同时使用同一个网站进行开发。当一个开发员调试远程网站时,所有其他开发人员的请求都将被挂起,防止并发冲突。
2.ASP.NET网站常用文件类型
ASP.NET网站应用程序中可以包含很多文件类型,某些文件类型由ASP.NET支持和管理(如aspx、ascx等),而其他文件类型则是由IIS服务支持管理(.html、.gif等)
(续表)
3.网页常用指令
ASP.NET页面中的前几行,一般都是<%@...%>这样的代码,通常称为页面指令,主要用来定义ASP.NET网页分析器和编译器使用的特定于该页的一些功能特性。在.aspx文件中使用的页面指令一般有以下几种。
(1)<%Page%>。<%Page%>指令可定义ASP.NET网页分析器和编译器使用的属性,一个页面只能有一个这样的指令。
(2)<% @Import Namespace=″Value″% >。<% @Import Namespace=″Value″%>指令可将命名空间导入到ASP.NET应用程序文件中。一个指令只能导入一个命名空间,如果要导入多个命名空间,应使用多个@Import指令来执行。大部分常用的命名空间在默认状态下都被自动导入,不需要手动加入。
说明:由于管理上百个类过于复杂,.NET引入了命名空间的概念。所谓命名空间就是将许多功能类似的类组成一个逻辑单元,如System.IO命名空间包含了所有输入输出操作类。
(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 L:与tagprefix属性关联的命名空间的程序集。程序集名称不包括文件扩展名。如果将自定义控件的源代码文件放置在应用程序的App_Code文件夹下,ASP.NET2.0在运行时会动态编译源文件,因此不必使用assembly属性。
4.网页文件模型
ASP.NET网页由两部分组成:
①可视元素,包括标记、服务器控件和静态文本。
②页的编程逻辑,包括事件处理程序和其他代码。
与此同时,ASP.NET提供两个用于管理可视元素和代码的模型,即单文件页模型和代码隐藏页模型。这两个模型功能相同,两种模型中可以使用相同的控件和代码。
(1)单文件页模型。在单文件页模型中,页的标记及其编程代码位于同一个物理.aspx文件中。编程代码位于script块中,该块包含runat="server"属性,此属性将其标记为ASP.NET应执行的代码。以Login.aspx网页为例,如代码清单所示。
在上述代码中,将页的标记及其编程代码位于同一个物理.aspx文件Login.aspx中,这样运行的结果是不变的。
其中,script块可以包含页所需的任意多的代码。代码可以包含页中控件的事件处理程序(如代码所示)、方法、属性及通常在类文件中使用的任何其他代码。在对该页进行编译时,编译器将生成和编译一个从Page基类派生或从使用@Page指令的Inherits属性定义的自定义基类派生的新类。例如,如果在应用程序的根目录中创建一个名为Login的新ASP.NET网页,则随后将从Page类派生一个名为ASP.Login_aspx的新类。对于应用程序子文件夹中的页,将使用子文件夹名称作为生成的类的一部分。生成的类中包含.aspx页中的控件的声明以及你的事件处理程序和其他自定义代码。
在生成页之后,生成的类将编译成程序集,并将该程序集加载到应用程序域,然后对该页类进行实例化并执行该页类以将输出呈现到浏览器。如果对影响生成的类的页进行更改(无论添加控件还是修改代码),则已编译的类代码将失效,并生成新的类。单文件ASP.NET网页中的页类的继承模型如下图所示。
图2-0-5 单文件网页的页类继承模型
(2)代码隐藏模型。对于代码隐藏模型相信大家不陌生,“Hello,World”Web应用程序项目采用的就是这种模型,它也是ASP.NET默认的页面代码模型。在代码隐藏模型中,页的标记和服务器端元素(包括控件声明)位于.aspx文件中,而页代码则位于单独的代码文件中。该代码文件包含一个分部类,类是使用partial关键字进行声明的,以表示该代码文件只包含构成该页的完整类的全体代码的一部分。而在页运行时,编译器将读取.aspx页以及它在@Page指令中引用的文件,将它们汇编成单个类,然后将它们作为一个单元编译为单个类。在分部类中,添加应用程序要求该页所具有的代码。此代码通常由事件处理程序构成,也可以包括你需要的任何方法或属性。
代码隐藏页的继承模型比单文件页的继承模型要稍微复杂一些。模型如下:
①代码隐藏文件包含一个继承自基页类的分部类。基页类可以是Page类,也可以是从Page派生的其他类。
②.aspx文件在@Page指令中包含一个指向代码隐藏分部类的Inherits属性。
注意:并非所有的.NET编程语言都可用于为ASP.NET网页创建代码隐藏文件,必须使用支持分部类的语言。例如,J#不支持分部类。因此也不支持为ASP.NET页创建代码隐藏文件。
如果开发语言选择的是C#,建议使用代码隐藏模型。
本项目通过对C#语言的学习,初步认识C#的数据类型、程序控制结构、网站基础知识等内容。在以后的章节中,将会通过运用C#语言来进行ASP.NET相关程序的学习,进一步地熟悉这门语言。
1.理论题
(1)简述题。
①哪种循环方式最灵活?当循环次数确定的时候,哪种循环方式最合适?
②简述Select…Case语句的主要用途。
③写出For…Next语句的格式并简述其执行流程,说明其用途。
(2)填空题。
①case之后必须是__________________,其类型同样可以是_________、_________和________。Case块可以存在_________个,且_________改变相互之间的顺序,但每个case之后常量表达式的值不能相同。
②在C#语言中,条件语句分为________语句和________语句两种。
③在C#语言中,switch条件结构又被称为_________________结构。
④在switch结构中,使用________来结束switch结构的执行。
⑤只能针对基本数据类型使用swtich,包括________、________等类型。
⑥在C#语言中,要求每一个case语句和default语句中都必须包含___________语句,否则将出现语法错误。
⑦在C#语言中的循环结构有__________、__________、__________和__________四种实现方式。
2.实训题
(1)分别创建一个单页文件型和代码隐藏型网页。
(2)在编程题(1)的网页中,分别使用for、while、do-while语句编程,求1~100之内所有奇数的和与所有偶数的和。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。