本書主要從講解ASP.NET的基礎知識出發,同時結合實際操作案例,針對普通高校學習Web站點構建的初學者們精心編寫。全書共分為九個項目,分別介紹了ASP.NET的背景知識、ASP.NET的語言基礎、常用的HTML服務器控件、Web服務器控件、驗證服務器控件以及ASP.NET的內部對象等知識。本書在講解的過程中注重理論與實踐的結合,以實例形式對理論知識進行剖析和講解,幫助讀者更好地學習ASP.NET程序設計。本書可作為各類高職院校和普通本科院校計算機相關專業的教材,也可作為全國計算機等級考試的培訓教材,還可供廣大ASP.NET的初學者進行學習和參考。
項目2
ASP.NET語言基礎
【項目要點】
* 使用數組存取元素值。
* 利用數學運算求函數的值。
* 利用字符串進行連接運算。
* 利用日期和時間函數獲取當前時間。
* 使用條件語句演示變量結果。
* 利用循環語句進行數值計算。
* 使用過程計算函數最大值。
【引言】
ASP.NET支持.NET Framework中所有程序語言的語法,如C#、Visual Basic .NET和JScript .NET等,也就是說,我們可以使用上面三種語言中的任意一種語言開發ASP.NET應用程序。本項目以Visual Basic .NET為例來講解其語法。
【項目導入】
張揚是某施工隊的設計師,目前正在為學校進行裝修設計。為了校園環境的美觀,張揚決定在學校中心建一個圓形的花壇,在施工之前,張揚需要計算出花壇的面積。
為了準確、快速地計算出花壇的面積,張揚編寫了相應的ASP.NET程序,具體操作步驟如下。
(1) 新建一個aspx文件,并保存在特定的虛擬目錄下。
(2) 聲明所采用的腳本語言,程序語句如下。
(3) 添加如下動態代碼。
(4) 完整程序清單如下。
常量和變量的使用
(5) 用IE瀏覽該文件,結果如圖2-1所示。
圖2-1 運行結果
【項目分析】
由于在ASP.NET中,可以創建程序進行數值的代入,從而計算出運行結果,方便且準確。因此,張揚決定利用ASP.NET程序設計的知識來完成這一任務。
【能力目標】
* 了解標識符的命名規則。
* 了解函數的調用方式。
【知識目標】
* 掌握常見的日期和時間函數的使用。
* 掌握循環語句的使用。
任務1 使用數組存取元素值
知識儲備
1.??Visual Basic .NET語言
人們編寫計算機程序是為了讓計算機幫助我們解決一些實際應用問題。程序包括兩個部分:一部分是程序的處理對象——數據;另一部分是程序對數據的處理辦法或邏輯的描述——程序邏輯。計算機程序是對現實生活中解決問題的處理過程的描述。
1) 注釋和續行
Visual Basic .NET中,在語句前加上“'”表示該語句為注釋語句,例如:
Dim a as integer '該行為聲明語句
編譯器在編譯時將會忽略該注釋語句。
一般一條語句只占一行,如果語句太長,不能在一行內寫完,則要續行,寫法如下:
dim a as _ '用空格后跟一個下劃線表示續行
String;
相當于:
dim a as String;
2) 常量和變量
在程序中,用常量或變量來保存程序中需要處理的數據。常量或變量有3個基本的屬性:量的數據類型、量的名稱和量的值。
量的數據類型規定了該量可以表示的數據的類型、范圍以及該量允許參與的基本操作。從大類來講,計算機需要處理的數據分為兩種基本類型:一種是文本型,比如字符、字符串等,它們可以參與字符串的連接等一些運算;另一種是數值型,比如整數、小數等,它們可以參與數學運算。
知識鏈接:
常量是代表某些特定含義的不可改變的值。常量分為系統常量和用戶自定義常量兩種。系統常量是系統預先定義好的常量,可以在任何腳本中使用,不受作用域與可見性的限制。
常見的系統常量如表2-1、表2-2所示。
表2-1 邏輯常量
常 量
值
描 述
True
1
真
False
0
假
表2-2 表示空值的常用常量
常 量
描 述
Empty
變量沒有初始化
Nothing
對象為空
Null
變量不包含有效數據
用戶自定義常量是指用const語句定義的表示某個常數值的常量,在設計程序的過程中,不能對常量反復賦值。一般常量名采用大寫字母,例如:
const PI=3.1415926
變量用于保存特定類型的值,以便對數據進行讀、寫、運算等操作,它保存的值在程序運行時可以被改變。編程人員在定義變量時,必須遵循變量名的命名規則。
(1) 必須以字母開頭。
(2) 只能包含字母、數字或下劃線。
(3) 不能與系統保留的關鍵字相同。
(4) 變量名在其聲明的作用域內必須唯一。
(5) 長度不能超過255個字符。
量名稱用來標識一個量,在程序中,可以通過使用一個量來代表一些具體的數據值。
3) 數據類型
在Visual Basic .NET中,可以使用的基本數據類型如表2-3所示。
表2-3 基本數據類型
數據類型
長 度
取值范圍
描述(默認值)
Boolean
4字節
true或者false
布爾型(false)
Byte
1字節
0~255(無符號)
字節型(0)
Char
2字節
0~65 535(無符號)
字符型(" ")
Date
8字節
100.1.1~9999.12.31
日期時間型 (#01/01/0001
12∶00 AM#)
Decimal
12字節
小數位數為0時,最大的可能值為:
+/-79 228 162 514 264 337 593 543 950 335
有28個小數位的情況下,最大值為
+/-7.922 816 251 426 433 759 354 395 033 5
最小的非零值為(+/-1E-28)
小數型(0.0)
Double
8字節
負值取值范圍為
-1.797 693 134 862 315 70E+308
~-4.940 656 458 412 465 44E-324
正值取值范圍為
4.940 656 458 412 465 44E-324
~1.797 693 134 862 315 70E+308
雙精度浮點型(0.0)
integer
4字節
取值范圍為-2 147 483 648~2 147 483 647
整型(0)續表
數據類型
長 度
取值范圍
描述(默認值)
long
8字節
取值范圍為
-9 223 372 036 854 775 808~
9 223 372 036 854 775 807
長整型(0)
Object
4字節
對象型
Short
2字節
取值范圍為-32 768~32 767
短整型(0)
Single
4字節
負數取值范圍為
-3 402 823 5E+38~-1.401 298E-45
正數取值范圍為
1.401 298E-45~3.402 823 5E+38
單精度浮點型(0.0)
String(長度可變)
2字節
取值范圍為0~65 535
字符串型(" ")
用戶自定義類型(structure)
成員所占空
間的總和
結構中的每個成員的值的范圍由其本身的數據類型決定,不受其他成員的影響
結構型(無)
根據程序設計的規范,所有變量都必須事先聲明。變量聲明后,即可在程序中利用賦值語句指定此變量的值,變量的聲明格式如下:
dim 變量名 as 變量類型 [=值] '括號中的選項表示在聲明的同時進行初始化
例如:
dim a as integer=10
知識鏈接:
Visual Basic .NET對大小寫不敏感。
4) 運算符
運算符是一些符號化的命令,通過使用它們可以執行一些簡單的運算功能。下面介紹幾種常見的運算符。
(1) 數學運算符:執行數學運算的運算符,如表2-4所示。
表2-4 數學運算符
運算符
示 例
功 能
+
a+b
求a與b的和
-
a-b
求a與b的差
*
A*b
求a與b的積
/
a/b
求a除以b的商,結果為一浮點型值
\
a\b
求a除以b的商,結果為一整型值
^
a^b
求a的b次冪
mod
a mod b
求a除以b的余數
(2) 賦值運算符:執行賦值運算的運算符,如表2-5所示。
表2-5 賦值運算符
運 算 符
示 例
功 能
=
a=b
將b的值賦予a
+=
a+=b
將a+b的值賦予a
-=
a-=b
將a-b的值賦予a
*=
a*=b
將a*b的值賦予a
。=
a/=b
將a/b的值賦予a
\=
a\=b
將a\b的值賦予a
^=
a^=b
將a^b的值賦予a
&=
a&=b
將a&b的值賦予a
(3) 位邏輯運算符:執行位邏輯運算的運算符,如表2-6所示。
表2-6 位邏輯運算符
運 算 符
示 例
功 能
bitand
a bitand b
將a與b執行按位“與”運算
bitnot
bitnot(a)
將a執行按位“非”運算
bitor
a bitor b
將a與b執行按位“或”運算
bitxor
a bitxor b
將a與b執行按位“異或”運算
(4) 比較運算符:執行比較運算的運算符,如表2-7所示。
表2-7 比較運算符
運 算 符
示 例
功 能
<
result=a 若a <=
result=a<=b
若a<=b,則result為true;否則為false
>
result=a>b
若a>b,則result為true;否則為false
>=
result=a>=b
若a>=b,則result為true;否則為false
=
result=a=b
若a=b,則result為true;否則為false
<>
result=a<>b
若a<>b,則result為true;否則為false
is
result=object1 is object2
若object1與object2存儲同一個對象,則result為true;否則為false
like
result=string like pattern
若string匹配pattern,則result為true;否則為false
(5) 連接運算符:執行連接運算的運算符,如表2-8所示。
表2-8 連接運算符
運 算 符
示 例
功 能
+
result=a+b
當a與b都是String型,或者一個是String型,或者都是存儲字符串的Object型時,result為a與b的合并字符串
&
result=a&b
無論a與b為何種類型,都會自動轉化為String型,result為a與b的合并字符串
(6) 邏輯運算符:執行邏輯運算的運算符,如表2-9所示。
表2-9 邏輯運算符
運 算 符
示 例
功 能
and
result=a and b
將a與b執行邏輯“與”運算。a和b均為布爾型,如果a與b中有一個為false,則result為false;否則為true
not
result=not(a)
將a與b執行邏輯“非”運算。a為布爾型,如果a為true,則result為false;否則為true
or
result=a or b
將a與b執行邏輯“或”運算。a和b均為布爾型,如果a與b中有一個為true,則result為true;否則為false
xor
result=a xor b
將a與b執行邏輯“異或”運算。a和b均為布爾型,如果a和b同時為true或者同時為false,則result為false;否則為true
5) 變量的聲明
(1) 聲明變量。
Visual Basic .NET使用Dim子句來聲明變量,聲明的范例如下:
Dim a '聲明變量a的數據類型為默認的Object
上述程序代碼雖然聲明了一個變量a,但并未指定這個變量的數據類型。因此,程序將會使用默認的Object數據類型作為變量a的數據類型。如果需要指定變量的數據類型,可以利用As關鍵詞來聲明變量的數據類型,例如:
Dim i,j As Integer '聲明循環使用的計數器
由于上述程序代碼的i和j變量都屬于Integer(整型)數據類型,因此可以利用上述程序代碼直接聲明。不過,如果是兩個不同的數據類型,則可以采用下面的聲明方法:
Dim a As String, b As Integer '變量a屬于字符串變量,b屬于整型變量
此外,還可以在聲明變量的時候,直接指定變量的初始值,例如:
Dim a As Integer, b As String = "中國" '初始化變量b的值
(2) 聲明常量。
嚴格地說,常量是變量的一種,只是在聲明之后,這種變量的值不再發生變化,因此將這種變量稱為常量。在編寫程序代碼的過程中,可以利用常量替代固定的數字或字符串。與其他各種程序開發語言一樣,ASP.NET、VB.NET也擁有自己的常量表,但如果用戶有需求,可以采用const子句來聲明自己的常量,例如:
const strFont1 = "隸書"
6) 賦值語句
賦值語句的表示方法如下:
目的操作數=來源操作數(變量以及具有屬性的對象)(表達式、變量、常數以及具有屬性的對象)
在賦值運算符“=”的右邊可以是字符串、數值或是表達式,在“=”的左邊則是保存字符串、數值、運算結果的變量名稱。
上述表示方法的范例如下:
strFontName="隸書"
strAuthorName="張大一"
MaxRecords=100
拓展提高: 這里需要注意的是,如果需要在字符串變量中使用雙引號時,只要重復輸入兩個雙引號即可。例如:strAuthorName ="我的""第一個""ASP.NET程序"。
2. 數組
1) 數組的基本概念
數組是一種用來保存多個相同類型數據元素的結構,可以將它視為變量的延伸。使用數組的好處是不需要聲明許多變量,我們利用數組的索引,可以直接存取數組的元素值。
在程序中需要使用多個相同數據類型的量時,不必為每個量都聲明一個變量,只需聲明一個合適長度的數組。數組有如下特點:
(1) 數組是一群數據的集合;
(2) 數組中的元素具有相同的數據類型,而且自由類型的數組可以保存不同數據類型的數據;
(3) 元素與元素之間,使用相同的變量名稱,元素與元素之間的不同,只不過是排列順序不同。
2) 數組的聲明
在Visual Basic .NET中,通常也是使用Dim子句來聲明數組,同時也可以在聲明的時候直接指定數組的大小。例如:
Dim Arr1(10) As Integer '聲明一個含有11個元素的一維數組
上述程序代碼可以聲明一個名為Arr1 的一維數組,而這個數組共有11個元素,數組中元素的下標從0~10。除了這種聲明方法以外,也可以直接指定數組的元素。例如:
Dim Arr1 As Integer()={10,20,30,40,50}
上述的程序代碼等于聲明一個Arr1(4)的一維數組,這個數組的每個元素的值如下:
Arr1(0)=10
Arr1(1)=20
Arr1(2)=30
Arr1(3)=40
Arr1(4)=50
上面介紹了一維數組的聲明與設置數據的方法。二維數組的聲明范例如下:
Dim ArrayA(4,1) As Integer
上述表明表示該數組有5行2列。
在二維數組中,也可以直接指定數組的元素來進行聲明,例如:
Dim ArrayB As Integer(,)={{0,1},{2,3},{4,5},{6,7},{8,9}}
上述程序代碼等于聲明一個總共含有10個元素的數組,ArrayB(4,1)數組的元素如下:
ArrayB(0,0)=0,ArrayB(0,1)=1
ArrayB(1,0)=2,ArrayB(1,1)=3
ArrayB(2,0)=4,ArrayB(2,1)=5
ArrayB(3,0)=6,ArrayB(3,1)=7
ArrayB(4,0)=8,ArrayB(4,1)=9
3) 調整數組的大小
Visual Basic .NET的ReDim子句可以用來調整數組的大小,它用于重新定義一個數組的存儲空間大小,即改變數組可存儲元素的數量。不能用ReDim來聲明數組或改變數組的數據類型。
假設目前已經利用Dim子句聲明了一個一維數組ArrayA(5),則可利用下列程序代碼將數組的上限調高:
ReDim ArrayA(10) '將數組的容量擴大
執行上述程序代碼之后,原來的ArrayA(5)就會變成ArrayA(10)——具有11個元素的一維數組。當然,如果單純使用上述程序代碼,改變后的數組內容將會全部被清除。如果希望保留數組元素原來的值,并加大數組的大小,就應該使用Preserve保留字。保留原有數組元素值的范例如下:
ReDim Preserve ArrayA(10)
上述程序代碼可以將數組的大小放大,并保留了數組元素原來的值,但ArrayA(5)以后的數組元素值都是空的。如果縮小數組的大小,那么被縮小部分的數據還是會遺失。
以上是Preserve保留字用于一維數組的情形。Preserve用于多維數組的情形也一樣,不過多維數組在使用上會有下列限制。
(1) 不使用Preserve保留字:可以任意改變多維數組每一維的大小。
(2) 使用Preserve保留字:只能改變最后一維的大小。
多維數組應用ReDim的范例如下:
Dim ArrayB(10,15) As Integer
ReDim ArrayB(20,25) '合法的語句
ReDim Preserve ArrayB(20,25) '不合法的語句
ReDim Preserve ArrayB(10,25) '合法的語句
任務實踐
張揚使用數組存取元素值的操作如下所示。
(1) 新建一個.aspx文件,并保存在特定的虛擬目錄下,在文件中輸入下列程序代碼。
數組的使用
(2) 運行該程序,其結果如圖2-2所示。
圖2-2 數組的使用
任務2 利用數學運算求函數的值
知識儲備
1. 數學運算符的使用
在程序設計的過程中,通常需要進行數據處理,數學計算是數據處理中比較常見的,也是比較基本的運算。在ASP.NET中,可以使用系統的數學運算符來進行一些基本的數學運算。
2. 系統數學運算函數的使用
在Visual Basic .NET中,有很多系統函數,用來執行常用的數學運算。這些函數不用程序員自己定義,可以直接在程序中引用。在學習這些函數的過程中,應把重點放在函數的功能、參數以及返回值上,這樣可以達到事半功倍的效果。
在本書中,僅僅介紹了一些常用的函數,但在實際應用中,這些函數還遠遠不夠,如果需要,可以去查看ASP.NET的相關技術文檔。
常見的數學運算函數如表2-10所示。
表2-10 數學運算函數
函 數
完整形式
參數說明
函數功能
Abs函數
Abs(number)
參數number為任意有效的數字表達式
返回number的絕對值。
如果number中包含了nothing,則函數返回nothing。如果number為一個未聲明的變量,則函數返回0
Exp函數
Exp(number)
參數number為雙精度浮點型的數值或任意有效的數字表達式
返回常量e(2.718282)的number次冪。函數返回值為雙精度浮點型
Rnd函數
Rnd(number)
函數為單精度浮點型或者任意有效的數字表達式。參數可選
返回一個隨機數,返回值類型為單精度浮點型
Sqrt函數
Sqrt(number)
參數number為雙精度浮點型的數值或任意有效的數字表達式
返回number的平方根值,返回類型為雙精度浮點型
Randomize函數
Randomize (number)
可選。一個Object類型或任何有效的數值表達式
在使用Rnd函數之前,產生一個用來作為隨機數產生器的種子。如果不使用Randomize函數來產生隨機數的種子時,則每次使用Rnd函數都將會得到相同的隨機數續表
函 數
完整形式
參數說明
函數功能
Fix函數
Fix(number)
Double類型的數字或任何有效的數值表達式
返回數字的整數部分,如果參數為負數,Fix函數返回大于或等于number參數的第一個負整數
Int函數
Int(number)
Double類型的數字或
任何有效的數值表達式
返回數字的整數部分,如果參數為負數,則Int函數返回小于或等于number參數的第一個負整數
任務實踐
張揚利用數學運算計算函數值的操作如下所示。
(1) 用文本編輯器新建一個aspx文件,保存在特定的虛擬目錄下。
(2) 聲明所采用的腳本語言。
(3) 添加演示數學運算函數的動態代碼。
(4) 用數學運算計算函數值的完整程序代碼如下。
數組的使用
(5) 用IE瀏覽該程序,結果如圖2-3所示。
圖2-3 數學函數的使用
任務3 利用字符串進行連接運算
知識儲備
1. 字符串運算符的使用
字符串屬于文本型數據,一個字符串是用一對雙引號括起來的一個字符序列,例如:"ASP.NET應用程序設計"。
字符串最基本的操作是進行字符串的連接運算。字符串連接運算符有兩個:“+”和“&”,這兩個運算符的功能在項目1中已經進行過講解。
2. 字符串函數的使用
對字符串的處理是程序設計過程中經常遇到的一個問題。常見的字符串操作和處理函數如表2-11所示,在程序中可以直接使用,不需要程序員自己聲明。
表2-11 字符串處理函數
函數類型
函數名稱
函數功能說明
字符串長度函數
Len(s)
獲取字符串中所有字符的個數
轉換為小寫字母
Lcase(s)
將字符串里的所有大寫字母轉化為小寫字母續表
函數類型
函數名稱
函數功能說明
轉換為大寫字母
Ucase(s)
將字符串里的所有小寫字母轉化為大寫字母
字符串截取函數
Left(s,n)
從字符串s左邊第一個字符開始,取出n個字符
Right(s,n)
從字符串s右邊第一個字符開始,取出n個字符
Mid(s,n,m)
從字符串s左邊第n個字符開始,取出m個字符。如果獲取第n個字符開始到字符串結束,參數m可以省略不寫
刪除空白字符函數
Ltrim(s)
刪除字符串左邊的空白
Rtrim(s)
刪除字符串右邊的空白
Trim(s)
刪除字符串前后的空白
字符串替換函數
Replace(s,s1,s2)
將字符串s里的s1字符串用s2字符串替換
字符串搜索函數
InStr(s,s1)
在字符串s里搜索s1字符串的起始位置
任務實踐
張揚利用字符串進行連接運算的步驟如下。
(1) 用文本編輯器新建一個aspx文件,保存在特定的虛擬目錄下。
(2) 聲明所采用的腳本語言。
(3) 添加如下的動態代碼演示常見字符串函數的使用。
(4) 用字符串進行連接運算的完整程序代碼如下。
字符串操作函數的使用
(5) 用IE運行該程序,結果如圖2-4所示。
圖2-4 字符串操作函數的使用
任務4 利用日期和時間函數獲取當前時間
知識儲備
在程序設計的過程中,程序員經常要對日期和時間進行處理,比如記錄用戶登錄的時間或在線停留的時間等,有的時候需要把時間值存入數據庫中。在ASP.NET中,程序員可以直接使用由系統提供的很多日期和時間處理函數。
日期或時間數據通常是用一對“#”包含的相關數據,例如:
#12/31/99#
表示公元1999年12月31日。
常見的日期和時間函數如表2-12所示。
表2-12 日期和時間函數
函數類型
函數名稱
功能說明
日期和時間
Now
獲取系統當前的日期和時間
年份函數
Year(Date)
獲取系統的公元年份
月份函數
Month(Date)
獲取系統的月份
星期函數
WeekDay(Date)
獲取當天是一星期中的第幾天(從星期日開始算起)
日期函數
Day(Date)
獲取系統的日期
小時函數
Hour(Time)
獲取24小時制的小時
分鐘函數
Minute(Time)
獲取系統的分鐘
秒鐘函數
Second(Time)
獲取系統的秒鐘
計時函數
Timer
獲取由午夜0時0分0秒開始到目前累計的總秒數
在使用這些函數時,一定要注意該函數的功能以及參數,這樣才能夠正確運用這些函數。
任務實踐
利用日期和時間函數獲取當前時間的操作步驟如下所示。
(1) 新建一個aspx文件,保存在特定的虛擬目錄下。
(2) 聲明所采用的腳本語言。
(3) 添加如下動態代碼。
(4) 用日期和時間函數獲取當前時間的完整程序代碼如下。
日期與時間函數的使用
(5) 用IE瀏覽該文件,結果如圖2-5所示。
圖2-5 日期與時間函數的使用
任務5 使用條件語句演示變量結果
知識儲備
1.??If…Then語句
If…Then語句是依據條件的判斷結果,決定執行程序代碼塊的條件判斷語句。如下列程序代碼所示為最簡單的If…Then語句:
If 條件判斷式 Then
'執行條件判斷式為True值的程序代碼塊
End If
上述程序代碼中,如果條件判斷式的值為False,就不會執行If…Then語句中的程序代碼。反之如果條件判斷式的值為True,就會執行If...Then語句中的程序代碼塊。這是If…Then語句最簡單的結構。
當If…Then條件判斷語句不需要執行額外的程序代碼塊時,也可以將上述程序代碼改寫成如下程序代碼所示的單一語句:
If 條件判斷式 Then '執行條件判斷式為True值的程序代碼塊
上述程序代碼的范例如下:
If a=False Then Response.Write("a變量的值為False
")
2.??If…Then…Else條件判斷語句
上面的條件結構語句只有執行或不執行這類單一選擇。使用If…Then…Else條件判斷語句時,將會依據條件值自動二選一執行程序代碼塊。當If之后的條件判斷式的值為True時,將會執行第一段程序代碼塊;反之如果值為False,則執行False語句之后的程序代碼塊。
If…Then…Else條件判斷語句的語法格式如下:
If條件判斷式Then
'執行條件判斷式為True值的程序代碼塊
Else
'執行條件判斷式為False值的程序代碼塊
End If
3. 多選一的條件判斷語句
If…Then條件判斷語句除了“是”就是“否”,除了If…Then…Else條件判斷語句的結構之外,還可以變化成多選一的條件判斷語句。If…Then條件判斷語句多選一的語法格式如下:
If 條件判斷式1 Then
程序代碼塊1
Else If 條件判斷式2 Then
程序代碼塊2
Else
程序代碼塊3
End If
如上述程序代碼所示,如果條件判斷式1的值為True,只會執行程序代碼塊1。如果條件判斷式1的值為False,就會繼續判斷條件判斷式2的值。如果條件判斷式2的值為True,則執行程序代碼塊2,否則執行Else語句后的程序代碼塊3。
4. Select Case語句
與If…Then…Else條件判斷語句一樣,Select Case語句也是屬于多選一的條件語句。
這種條件判斷的語句較為簡潔,且可依照符合的條件執行不同的程序代碼塊,其結構如下:
Select Case 條件/表達式
Case 條件1
程序代碼塊1
Case 條件2
程序代碼塊2
Case 條件3
程序代碼塊3
Case Else
程序代碼塊4
End Select
上述程序代碼中,如果“條件/表達式”皆不符合條件1、條件2、條件3,將會執行Case Else語句之后的程序代碼塊4。反之如果符合條件1、條件2和條件3的其中之一,將會執行對應的程序代碼塊。Select Case語句的范例如下:
Select Case條件判斷語句
Select Case條件判斷語句
5. 其他條件判斷語句(iif函數)
iif函數的功能與If…Then語句的功能非常相似,其語法如下所示:
iif (條件式,語句1,語句2)
說明:
(1) 條件式是運算結果為True值或False值的條件表達式;
(2) 語句1是當運算的結果為True值的表達式或變量的內容;
(3) 語句2是當運算的結果為False值的表達式或變量的內容。
任務實踐
使用條件語句演示變量結果的操作步驟如下所示。
(1) 新建一個aspx文件,保存在特定的虛擬目錄下。
(2) 聲明所采用的腳本語言。
(3) 添加如下的動態代碼。
(4) 用條件語句演示變量結果的完整程序代碼如下。
條件語句的使用
(5) 用IE瀏覽該文件,結果如圖2-6所示。
圖2-6 條件語句的使用
任務6 利用循環語句進行數值計算
知識儲備
1.??For…Next循環語句
For…Next循環語句適用于固定次數和等差計算的程序代碼中。For…Next循環語句的程序格式如下:
For 變量名稱=初始值to最大值[Step增量]
'要執行的程序代碼塊
Next 變量名稱
說明:
變量名稱可以是整數、長整數和短整數;初始值可以是負數、正數;最大值可以是負數、正數;Step增量可以是負數、正數。循環每執行一次,變量的值就會自動加上增量的值,且當變量的值大于最大值時,程序自動結束循環的執行。如果增量是1,可以省略不寫;Next之后的變量名稱也可以省略不寫。
2.??For Each...Next循環語句
For Each…Next循環語句與For…Next循環語句非常類似,只是For Each…Next循環語句用于顯示對象或對象集合的所有元素,而且特別適用于不知道元素數量的對象集合。
For Each...Next循環語句的范例如下:
For Each...Next語句
For Each...Next語句...獲取
Request ServerVariables方法的集合
3.??While...End While循環語句
While…End While循環語句和For...Next循環語句非常類似,不過While...End While循環語句可以依據條件式的運算結果結束循環的執行。While...End While循環語句的語法格式如下:
While 條件式
程序代碼塊
End While
說明:
(1) 條件式是必要的項目。條件式的運算結果只能是True值或False值。如果表達式沒有運算結果,將會視為False值。
(2)??End While表示結束While循環語句。
4.??Do...Loop語句
當某個Boolean條件為True時或在該條件變為True之前,重復執行某個語句塊。
Do {While|Until}condition
[statements]
[Exit Do]
[statements]
Loop
或者
Do
[statements]
[Exit Do]
[statements]
Loop {While|Until} condition
各部分說明如下。
While:除非使用Until,否則是必選項。重復循環直到condition為False。
Until:除非使用While,否則是必選項。重復循環直到condition為True。
condition:可選項。Boolean型,值為True或False的表達式。
statements:可選項。一條或多條語句,它們在condition為True時或直到condition為True之前重復執行。
其中,如果用While,則表示當后面的條件為True時,執行循環,直到條件為False時才退出循環;如果用Until,則表示當后面的條件為False時才執行循環,直到條件為True時才退出循環。第一種形式與第二種形式的區別在于:在同等情況下,前者比后者多循環執行一次。在實際使用過程中要注意區別這些細節,以達到熟練掌握的目的,在實際應用中要靈活運用它們。
例如:
Dim Check As Boolean=True
Dim Counter As Integer=0
Do 'Outer loop.
Do While Counter<20
Counter+=1
If Counter=10 Then
Check=False
Exit Do
End If
Loop
Loop Until Check=False
該例子顯示了如何使用Do...Loop 語句。內層的Do...Loop 語句循環10次,將標志值設置為False,并使用Exit Do語句提前退出循環。外層循環則在檢查標志值后立即退出。
5.??Exit Do/For語句在循環結構中的使用
在一個循環結構中,有時需要當程序循環執行到某一步時終止循環的繼續執行,再退出循環,這個時候就要用到Exit Do/For語句結構。另外,該語句結構還可以用在如下形式結構中:
Exit { Do|For|Function|Property|Select|Sub|Try|While }
它的功能是退出過程或塊,并且立即將控制傳送到過程調用或塊定義后面的語句。
各部分說明如下。
Do:立即退出所在的Do循環,繼續執行Loop語句后面的語句。只能在Do循環內使用Exit Do。在嵌套的Do循環中使用Exit Do時,Exit Do會將控制傳送到Exit Do所在循環的外層循環。
For:立即退出所在的For循環,繼續執行 Next 語句后面的語句。只能在For...Next 或For Each...Next循環內使用Exit For。當在嵌套的For循環中使用Exit For時,Exit For 會將控制傳送到Exit For所在循環的外層循環。
Function:立即退出所在的Function過程,繼續執行調用Function過程的語句后面的語句。只能在Function過程內使用Exit Function。
Property:立即退出所在的Property過程,繼續執行調用Property過程的語句,即繼續執行請求或設置屬性值的語句。只能在Property過程內使用Exit Property。
Select:立即退出所在的Select Case循環,繼續執行End Select語句后面的語句。只能在Select Case語句內使用Exit Select。
Sub:立即退出所在的Sub過程,繼續執行調用Sub過程的語句后面的語句。只能在Sub過程內使用Exit Sub。
Try:立即退出所在的Try或Catch語句塊,如果有Finally語句塊,則繼續執行Finally語句塊,否則繼續執行Exit Try語句后面的語句,Exit Try只能在Try...Catch...Finally語句內使用。
While:立即退出所在的While循環,繼續執行End While語句后面的語句。只能在While循環內使用Exit While。當在嵌套的While循環中使用Exit While時,Exit While將控制傳送到Exit While所在循環的外層循環。
例如:
Sub ExitStatementDemo()
Dim I, MyNum As Integer
Do
For I=1 To 1000
MyNum=Int(Rnd*1000)
Select Case MyNum
Case 7:Exit For
Case 29:Exit Do
Case 54:Exit Sub
End Select
Next I
Loop
End Sub
其中的Exit語句分別退出了For...Next循環、Do...Loop及Sub過程。
任務實踐
利用循環語句進行數值計算的操作步驟如下所示。
(1) 新建一個aspx文件,并保存在特定目錄下。
(2) 聲明所采用的腳本語言。
(3) 添加如下動態代碼。
(4) 用循環語句進行數值計算操作的完整程序代碼如下。
循環語句的使用
(5) 用IE瀏覽該文件,結果如圖2-7所示。
圖2-7 循環語句的使用
任務7 使用過程計算函數最大值
知識儲備
1. 過程
過程通常也稱為子程序,是實現某種特定功能的代碼塊。過程一旦被定義并且實現之后,就可以在定義它的腳本中重復調用。函數(function)可以返回值,而過程則不能,這就是函數與過程的本質區別。過程是包含在Sub和End Sub語句之間的一組Visual Basic語句,執行操作但不返回值。
可以用如下語法來聲明一個過程:
sub subname[(arglist)]
[statement]
[exit sub]
[statement]
end sub
其中,arglist為參數列表,為可選項。如果在子程序執行過程中遇到exit sub語句,則忽略exit sub后面的語句,立刻退出子程序。
子程序的調用可以采取如下方法:
[call] subname[(argumentlist)]
其中,call為調用關鍵字,可以省略。
2. 函數
function函數是包含在function和end function語句之間的一組程序語句,與sub過程類似,但是function函數可以通過函數名返回一個值,這個值是在過程的語句中賦給函數名的。如下面的例子:
function Celsius(f)
Celsius=(f-32)*5/9 '將華氏溫度轉換為攝氏溫度
end function
任務實踐
使用過程計算函數最大值的操作步驟如下所示。
(1) 新建一個aspx文件,并保存在特定的虛擬目錄下。
(2) 聲明程序所采用的腳本語言。
(3) 分別定義一個過程和一個函數。
(4) 添加調用過程和函數的動態代碼。
(5) 用過程計算函數最大值的完整程序代碼如下。
演示過程和函數的使用
(6) 用IE瀏覽該aspx文件,結果如圖2-8所示。
圖2-8 演示過程和函數的使用
上機實訓 創建ASP.NET Web應用程序
實訓背景
在課堂上,某計算機專業老師要求學生運用本章所學知識創建一個Web窗體頁,以便進一步鞏固所學知識。
實訓內容和要求
創建一個Web窗體頁非常簡單。最簡單的方法就是把現有的HTML文件的文件擴展名更改為.aspx,即可創建Web窗體頁。而且,這種方法不需要對代碼進行任何修改。但是為了加深同學們對ASP.NET程序的掌握,老師要求學生在Visual Studio中來創建Web窗體頁。
實訓步驟
在Visual Studio中創建一個Web窗體頁的具體步驟如下。
(1) 右擊“解決方案資源管理器”面板中的“D:\...\MyFirstASPNET”節點,彈出快捷菜單,在其中選擇“添加新項”命令,如圖2-9所示。
(2) 彈出“添加新項-D:\ASP.NET Textbook\ch01\MyFirst ASPNET\”對話框,單擊該對話框中的“Web窗體”圖標,如圖2-10所示。
圖2-9 選擇“添加新項”命令 圖2-10 單擊“Web窗體”圖標
(3) 單擊“添加”按鈕,就可以添加名稱為Default2.aspx的Web窗體頁,如圖2-11所示。
圖2-11 添加Web窗體頁后的“解決方案資源管理器”面板
Default2.aspx頁包括Default2.aspx和Default2.aspx.cs文件。Default2.aspx文件包括該頁的可視元素。雙擊圖2-11中的Default2.aspx節點,可以查看該頁的HTML代碼。代碼的具體內容如下:
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
無標題頁
…
Default2.aspx.cs文件包括Default2.aspx頁面的編程邏輯代碼(使用的語言