《ASP.NET實踐教程(第2版)》采用C#語言作為ASP.NET Web應(yīng)用程序的開發(fā)語言,以Visual Studio為開發(fā)平臺,通過簡單實用的實例全面介紹使用ASP.NET進行Web程序開發(fā)的常用技術(shù)。本書第1~7章主要介紹ASP.NET的基礎(chǔ)知識、ASP.NET的內(nèi)置對象、Web服務(wù)器控件、驗證控件、網(wǎng)頁布局技術(shù)、Web數(shù)據(jù)庫編程基礎(chǔ)等內(nèi)容;第8~11章介紹網(wǎng)站設(shè)計中幾個常用的功能模塊,包括注冊登錄模塊、在線投票模塊、留言板模塊、文件上傳下載模塊等;第12章介紹一個綜合的ASP.NET應(yīng)用開發(fā)案例。
本書可作為高等院校計算機相關(guān)專業(yè)的教材,也可供具有一定編程經(jīng)驗又需要迅速熟悉ASP.NET的讀者參考,同時也適合自學ASP.NET的讀者閱讀。
《ASP.NET實踐教程(第2版)》特點
1. 循序漸進,通俗易懂
本書所講的內(nèi)容避開了晦澀難懂的理論知識,但又覆蓋了使用ASP.NET技術(shù)進行Web編程所需要的各方面的基礎(chǔ)知識,并從基本操作開始,循序漸進地介紹了開發(fā)Web應(yīng)用程序需要用到的基本技術(shù)。采用通俗易懂的語言,一步一步、手把手地教會您各種技術(shù)的使用,宛如現(xiàn)場專家言傳身教。
2. 項目驅(qū)動,案例教學
本書不采用傳統(tǒng)的\"以概念解釋為主\"的方式,而采用\"以項目為驅(qū)動,實踐為主\"的方式描述完成每一個任務(wù)的方法和步驟。每一個任務(wù)的提出,都伴隨著一個完整的實例,讀者通過完成此實例,就能掌握相關(guān)的基本概念和技術(shù)。
3. 步驟詳細,圖文并茂
本書在介紹ASP.NET的各項技術(shù)時,采用了項目實踐的方式,且在講解中步驟詳細,圖文并茂,讀者只需要根據(jù)步驟一步步操作,邊學邊練,就可以掌握相關(guān)的技能,并從中找到學習ASP.NET的樂趣。
4. 結(jié)構(gòu)合理,符合軟件技術(shù)專業(yè)人才培養(yǎng)目標
作者在編寫此書時充分考慮了現(xiàn)代教育的特點,旨在培養(yǎng)具有較高水平、較高素質(zhì)的技能型人才。本書結(jié)構(gòu)合理,能讓讀者輕松上手,快速掌握相關(guān)內(nèi)容,全面提高學、練、用的能力。
在結(jié)構(gòu)上,本書先用少量篇幅介紹了ASP.NET技術(shù)的語言基礎(chǔ),使讀者在學習ASP.NET技術(shù)之前對相關(guān)知識有所了解。
在介紹ASP.NET技術(shù)時,作者并不急于解釋相關(guān)概念,而是將這些技術(shù)融入一個個小案例中,使讀者在實踐中進行探索、分析和創(chuàng)新,從而掌握這些理論知識。同時介紹了目前網(wǎng)絡(luò)比較流行的幾個網(wǎng)站功能模塊,讀者只需要作少許的修改和擴展,便可應(yīng)用于實際項目中。
前 言
一、關(guān)于ASP.NET
ASP.NET是微軟公司推出的Web開發(fā)平臺,是一種建立在公共語言運行庫(Common Language Runtime,CLR)上的編程框架,可用于在服務(wù)器上開發(fā)功能強大的Web應(yīng)用程序。它是目前技術(shù)最先進、特征最豐富、功能最強大的Web開發(fā)平臺之一。ASP.NET自推出以來,具有開發(fā)效率高、使用簡單快捷、管理更簡單、全新的語言支持、安全性高等特點,是目前主流網(wǎng)絡(luò)編程技術(shù)之一。
ASP.NET中內(nèi)置了很多控件,在其他Web開發(fā)技術(shù)(如JSP)中需要費盡心思才能完成的功能,在ASP.NET中只需要簡單地套用相應(yīng)的內(nèi)置控件即可完成。ASP.NET在數(shù)據(jù)庫連接方面做了很大的改進,新增的DataSource控件和GridView控件使得數(shù)據(jù)庫的操作更加簡捷方便。
二、本書結(jié)構(gòu)
本書在第1版的基礎(chǔ)上,進行了如下改進:采用目前市場上較流行的開發(fā)工具版本,版本更高,提供的功能更多;增加了IIS(Internet Information Services,互聯(lián)網(wǎng)信息服務(wù))的安裝過程,以及網(wǎng)站的發(fā)布與部署;增加了DIV+CSS布局基礎(chǔ)知識,使得頁面的設(shè)計更輕松、美觀;將第1版中第5章頁面結(jié)構(gòu)與配置文件的內(nèi)容分散到其他章節(jié),并刪除了一些冗余的段落和文字;在第1章至第6章中,增加了多個實戰(zhàn)案例,便于在學習基礎(chǔ)知識的同時,掌握案例的設(shè)計與應(yīng)用;在第7章中,增加了程序的調(diào)試過程,使讀者能更清晰地看到各個數(shù)據(jù)的變化過程;補全了第12章中其他所有功能的設(shè)計與實現(xiàn),使之成為一個功能齊全的Web應(yīng)用程序;修正了第1版中部分程序源碼的筆誤,確保程序的正確性和可行性。
本書內(nèi)容由淺入深,首先介紹ASP.NET編程必須掌握的基本技術(shù),并安排了對該章知識點綜合應(yīng)用的實戰(zhàn)案例,非常適合初學者入門學習;然后介紹實際開發(fā)中常用的模塊,這部分內(nèi)容適合初、中級讀者學習編程技術(shù);最后通過一個綜合實例講解實際項目的開發(fā)過程,其目的是快速提高讀者的實戰(zhàn)編程能力。
各章的主要內(nèi)容簡述如下。
第1章介紹網(wǎng)站發(fā)展歷史、.NET框架、Visual Studio開發(fā)環(huán)境、創(chuàng)建第一個ASP.NET程序、aspx文件和aspx.cs文件,以及發(fā)布和部署網(wǎng)站等內(nèi)容。
第2章介紹ASP.NET語言基礎(chǔ),包括C#語言基礎(chǔ)、XHTML標記語言、CSS簡介、DIV+CSS布局等內(nèi)容。
第3章介紹ASP.NET內(nèi)置對象,包括Page對象、Response對象、Request對象、Server對象、Application對象、Session對象和Cookie對象等內(nèi)容。
第4章介紹Web服務(wù)器控件,包括基本控件、選擇控件、列表控件和高級控件等內(nèi)容。
第5章介紹驗證控件的使用方法。
第6章介紹常用的網(wǎng)頁布局技術(shù),包括ASP.NET用戶控件、母版頁和內(nèi)容頁,以及導航控件等內(nèi)容。
第7章介紹Web數(shù)據(jù)庫編程基礎(chǔ),包括SQL語言,ADO.NET概述,Connection對象,Command對象,DataReader對象,DataAdapter對象,DataSet對象,插入、編輯、刪除數(shù)據(jù),數(shù)據(jù)綁定,數(shù)據(jù)控件,配置文件Web.config,以及程序調(diào)試等內(nèi)容。
第8章介紹開發(fā)Web應(yīng)用程序常用的模塊--注冊登錄模塊,并詳細介紹驗證碼生成的過程。
第9章介紹開發(fā)Web應(yīng)用程序常用的模塊--在線投票模塊,并詳細介紹XML文檔的使用,以及以圖片形式顯示結(jié)果的過程。
第10章介紹開發(fā)Web應(yīng)用程序常用的模塊--留言板模塊,并詳細介紹留言板的制作過程,為后面論壇系統(tǒng)的制作奠定基礎(chǔ)。
第11章介紹開發(fā)Web應(yīng)用程序常用的模塊--文件上傳下載模塊,并詳細介紹數(shù)據(jù)庫保存圖片數(shù)據(jù)的過程。
第12章介紹使用Visual Studio與SQL Server設(shè)計一個完整的實例--BBS論壇系統(tǒng),詳細講解一個項目的開發(fā)過程,使讀者對Web應(yīng)用程序的開發(fā)有一個較系統(tǒng)的理解。
三、本書特點
1. 循序漸進,通俗易懂
本書所講的內(nèi)容避開了晦澀難懂的理論知識,但又覆蓋了使用ASP.NET技術(shù)進行Web編程所需要的各方面的基礎(chǔ)知識,并從基本操作開始,循序漸進地介紹了開發(fā)Web應(yīng)用程序需要用到的基本技術(shù)。采用通俗易懂的語言,一步一步、手把手地教會您各種技術(shù)的使用,宛如現(xiàn)場專家言傳身教。
2. 項目驅(qū)動,案例教學
本書不采用傳統(tǒng)的\"以概念解釋為主\"的方式,而采用\"以項目為驅(qū)動,實踐為主\"的方式描述完成每一個任務(wù)的方法和步驟。每一個任務(wù)的提出,都伴隨著一個完整的實例,讀者通過完成此實例,就能掌握相關(guān)的基本概念和技術(shù)。
3. 步驟詳細,圖文并茂
本書在介紹ASP.NET的各項技術(shù)時,采用了項目實踐的方式,且在講解中步驟詳細,圖文并茂,讀者只需要根據(jù)步驟一步步操作,邊學邊練,就可以掌握相關(guān)的技能,并從中找到學習ASP.NET的樂趣。
4. 結(jié)構(gòu)合理,符合軟件技術(shù)專業(yè)人才培養(yǎng)目標
作者在編寫此書時充分考慮了現(xiàn)代教育的特點,旨在培養(yǎng)具有較高水平、較高素質(zhì)的技能型人才。本書結(jié)構(gòu)合理,能讓讀者輕松上手,快速掌握相關(guān)內(nèi)容,全面提高學、練、用的能力。
在結(jié)構(gòu)上,本書先用少量篇幅介紹了ASP.NET技術(shù)的語言基礎(chǔ),使讀者在學習ASP.NET技術(shù)之前對相關(guān)知識有所了解。
在介紹ASP.NET技術(shù)時,作者并不急于解釋相關(guān)概念,而是將這些技術(shù)融入一個個小案例中,使讀者在實踐中進行探索、分析和創(chuàng)新,從而掌握這些理論知識。同時介紹了目前網(wǎng)絡(luò)比較流行的幾個網(wǎng)站功能模塊,讀者只需要作少許的修改和擴展,便可應(yīng)用于實際項目中。
通過對本書的閱讀,讀者應(yīng)能達到如下能力目標。
(1) 對簡單網(wǎng)站進行設(shè)計、編輯、調(diào)試、運行的能力。
。2) 對ASP.NET各類控件的使用能力。
。3) 對網(wǎng)站數(shù)據(jù)庫進行管理和維護的能力。
。4) 應(yīng)用所學知識開發(fā)三層架構(gòu)應(yīng)用程序的能力。
四、本書適用對象
本書可作為高等院校計算機相關(guān)專業(yè)的教材,也可供具有一定編程經(jīng)驗又需要迅速熟悉ASP.NET的讀者參考,同時也適合自學ASP.NET的讀者閱讀。
本書由年輕而富有經(jīng)驗的.NET軟件技術(shù)研究小組組織編寫,由魏菊霞任主編,李志中、謝云任副主編,相信本書能夠為讀者順利進入ASP.NET編程世界提供幫助。
本書的編寫得到了學院領(lǐng)導的大力支持,在此表示衷心的感謝。
盡管作者已經(jīng)盡了各種努力來保證語言和代碼中不出現(xiàn)錯誤,但由于編寫時間倉促,水平有限,書中疏漏和不足之處在所難免,懇請各位讀者和專家批評指正,提出寶貴意見和建議。
編 者
第1章 新手入門 1
1.1 網(wǎng)站發(fā)展歷史 1
1.2 .NET框架 5
1.3 Visual Studio開發(fā)環(huán)境 6
1.4 創(chuàng)建第一個ASP.NET應(yīng)用程序 12
1.5 aspx文件和aspx.cs文件 16
1.6 發(fā)布和部署網(wǎng)站 20
小結(jié) 25
習題 25
第2章 ASP.NET語言基礎(chǔ) 27
2.1 C#語言基礎(chǔ) 27
2.2 XHTML標記語言 38
2.3 CSS簡介 42
2.4 DIV+CSS布局 45
2.5 實戰(zhàn):猜數(shù)游戲 50
小結(jié) 59
習題 59
第3章 ASP.NET內(nèi)置對象 62
3.1 ASP.NET 內(nèi)置對象概述 62
3.2 Page對象 62
3.3 Response對象 67
3.4 Request對象 71
3.5 Server對象 76
3.6 Application對象 79
3.7 Session對象 81
3.8 Cookie對象 84
3.9 實戰(zhàn)1:統(tǒng)計網(wǎng)站在線人數(shù) 85
3.10 實戰(zhàn)2:用戶登錄 87
小結(jié) 90
習題 90
第4章 Web服務(wù)器控件 92
4.1 HTML標記、HTML控件和
Web控件 92
4.2 HTML控件概述 94
4.3 Web控件概述 96
4.4 基本控件 97
4.5 選擇控件 100
4.6 列表控件 105
4.7 高級控件 110
4.8 實戰(zhàn):用戶注冊頁面 121
小結(jié) 129
習題 129
第5章 驗證控件 131
5.1 驗證控件概述 131
5.2 RequiredFieldValidator控件的功能
和使用 132
5.3 CompareValidator控件的功能
和使用 134
5.4 RangeValidator控件的功能
和使用 136
5.5 RegularExpressionValidator控件的
功能和使用 138
5.6 CustomValidator控件的功能
和使用 140
5.7 ValidatorSummary控件的功能
和使用 141
小結(jié) 143
習題 143
第6章 網(wǎng)頁布局技術(shù) 145
6.1 ASP.NET用戶控件 145
6.2 母版頁和內(nèi)容頁 150
6.3 導航控件 154
小結(jié) 157
習題 157
第7章 Web數(shù)據(jù)庫編程基礎(chǔ) 159
7.1 SQL語言 159
7.2 ADO.NET概述 164
7.3 Connection對象 165
7.4 Command對象 167
7.5 DataReader對象 168
7.6 DataAdapter對象和DataSet對象 171
7.7 插入、編輯和刪除數(shù)據(jù) 175
7.8 數(shù)據(jù)綁定 182
7.9 數(shù)據(jù)控件 184
7.10 配置文件Web.config 206
7.11 程序調(diào)試 209
小結(jié) 212
習題 212
第8章 注冊登錄模塊 214
8.1 設(shè)計思想 214
8.2 ASP.NET的圖像處理 215
8.3 注冊登錄模塊的實現(xiàn)過程 218
小結(jié) 234
習題 234
第9章 在線投票模塊 236
9.1 XML文檔 236
9.2 在線投票模塊設(shè)計思想 245
9.3 在線投票模塊的實現(xiàn) 245
小結(jié) 252
習題 252
第10章 留言板模塊 254
10.1 留言板模塊設(shè)計思想 254
10.2 數(shù)據(jù)庫設(shè)計 255
10.3 留言板模塊的實現(xiàn) 256
小結(jié) 277
習題 277
第11章 文件上傳下載模塊 279
11.1 文件上傳下載的設(shè)計思想 279
11.2 設(shè)計前的準備 280
11.3 上傳文件至服務(wù)器 282
11.4 從服務(wù)器下載文件 285
11.5 上傳圖片至數(shù)據(jù)庫 287
小結(jié) 296
習題 296
第12章 BBS論壇系統(tǒng) 298
12.1 設(shè)計思路 298
12.2 設(shè)計前的準備 299
12.3 數(shù)據(jù)庫設(shè)計 303
12.4 設(shè)計實體(Model)層 305
12.5 設(shè)計數(shù)據(jù)訪問(DAL)層 311
12.6 設(shè)計業(yè)務(wù)邏輯(BLL)層 331
12.7 主要功能界面(Web UI層)的實現(xiàn) 333
小結(jié) 365
習題 365
參考文獻 367
第3章 ASP.NET內(nèi)置對象
本章將詳細介紹ASP.NET的常用內(nèi)置對象,主要包括Page對象、Response對象、Request對象、Server對象、Application對象等。這些對象是用.NET框架中封裝好的類來實現(xiàn)的,在ASP.NET頁面初始化時,這些對象就已經(jīng)自動創(chuàng)建了,故在程序中可以直接使用,不需要再實例化。這些內(nèi)置對象為Web編程提供了豐富的功能,本章將重點介紹這些內(nèi)置對象的主要用途和使用方法。
本章學習目標:
* 了解ASP.NET內(nèi)置對象的種類。
* 掌握各種內(nèi)置對象的屬性和方法,以及在實際編程中的主要用途。
3.1 ASP.NET 內(nèi)置對象概述
ASP.NET包括Page、Response、Request、Application、Server、Session、Cookies 等多個內(nèi)置對象,每個對象都有自己的屬性、方法和事件。
下面簡單介紹這些內(nèi)置對象的功能,如表3-1所示。
表3-1 ASP.NET的內(nèi)置對象及其功能
對 象 名
功能說明
Page對象
用來設(shè)置與網(wǎng)頁有關(guān)的屬性、方法和事件
Response對象
用來向瀏覽器或客戶端輸出信息
Request對象
用來獲取從瀏覽器或客戶端返回的信息
Application對象
用來共享多個用戶的全局信息
Server對象
用來提供服務(wù)器端的一些屬性和方法
Session對象
用來存儲某些特定用戶的共享信息
Cookies對象
用來設(shè)置或獲取Cookie信息
3.2 Page 對 象
Page對象是由System.Web.UI命名空間中的Page類來實現(xiàn)的,當瀏覽器訪問Web頁面時,Web頁面被編譯成Page對象,緩存在服務(wù)器內(nèi)存中。Page對象用來設(shè)置與當前網(wǎng)頁有關(guān)的屬性、方法和事件。其常用的屬性、方法和事件如表3-2所示。
表3-2 Page對象常用的屬性、方法和事件
名 稱
功能說明
IsPostBack屬性
獲取一個值,該值用來判斷該頁是否是第一次被加載
IsVaid 屬性
獲取一個值,該值用來判斷該頁是否通過驗證
Validators屬性
獲取請求的網(wǎng)頁所包含的全部驗證控件集合
DataBind方法
將數(shù)據(jù)源綁定到指定的服務(wù)器控件
Dispose方法
強制服務(wù)器控件在內(nèi)存釋放之前執(zhí)行清理操作
FindControl方法
在頁面上搜索指定的服務(wù)器控件
Init事件
設(shè)置頁面或控件的初始值
Load事件
網(wǎng)頁被加載時發(fā)生
Unload事件
關(guān)閉文件、釋放對象等時觸發(fā)
3.2.1 IsPostBack屬性
IsPostBack屬性經(jīng)常用來判斷網(wǎng)頁是否是第一次訪問,當獲取的值為false時,表示當前頁是首次加載或訪問;當該值為true時則不是。從下面的【例3-1】中可以看出IsPostBack屬性的用途。
3.2.2 Init事件
Init事件用來設(shè)置頁面或控件的初始值,當ASP.NET頁面第一次被訪問時,將觸發(fā)Page對象的Init事件,對應(yīng)的事件處理方法為Page_Init(),同一個頁面只會被觸發(fā)一次Init事件。
3.2.3 Load事件
Load事件又稱加載或載入事件,當對象的相關(guān)數(shù)據(jù)裝載到內(nèi)存中時觸發(fā)該事件。即當頁面被加載時,就會觸發(fā)Page對象的Load事件。Load事件也可用來設(shè)置頁面或者控件的初始值,它與Init事件的主要區(qū)別在于:每次加載該頁面時,都會觸發(fā)其Load事件,因此一個頁面的Load事件可能被觸發(fā)多次,而Init事件只會在頁面第一次被訪問時觸發(fā)一次。
下面通過一個實例來介紹Page對象的這些屬性和事件的用途。
【例3-1】 設(shè)計一個下拉列表框(由DropDownList控件實現(xiàn)),下拉列表框中有一些可選的城市,當單擊【提交】按鈕時,將向下拉列表框中添加用戶輸入的城市。具體操作步驟如下。
(1) 打開Visual Studio開發(fā)工具, 新建一個網(wǎng)站ch03,在解決方案資源管理器中,右擊站點文件,在彈出的快捷菜單中選擇【添加新項】命令,添加一個新的Web窗體,命名為eg03_1.aspx。
。2) 打開【設(shè)計】窗口,在【表】菜單中選擇【插入表】命令,在【插入表格】對話框中設(shè)置行數(shù)、列數(shù)等參數(shù),設(shè)置好參數(shù)后,單擊【確定】按鈕添加一個3行2列的表格,如圖3-1所示。
圖3-1 設(shè)置插入表格參數(shù)
。3) 選中表格的第一行,單擊鼠標右鍵,在彈出的快捷菜單中選擇【修改】|【合并單元格】命令,并輸入\"輸入要添加的城市:\",打開工具箱,在表格的第二行添加1個TextBox控件、1個Button按鈕,第三行添加1個DropDownList控件,各控件的id屬性為默認值,設(shè)計界面如圖3-2所示(本章節(jié)添加的所有控件的具體內(nèi)容將在第4章中進行介紹)。
圖3-2 設(shè)計界面
。4) 雙擊eg3_1.aspx頁面的空白位置,打開eg3_1.aspx.cs文件,在Page對象的Load事件中添加的處理代碼如下。
protected void Page_Load(object sender, EventArgs e)
{
//往下拉列表框中添加值
DropDownList1.Items.Add(\"廣州\");
DropDownList1.Items.Add(\"佛山\");
DropDownList1.Items.Add(\"深圳\");
DropDownList1.Items.Add(\"東莞\");
}
這段代碼表示當頁面第一次被加載時,下拉列表框中將添加4個選項,分別是\"廣州\"\"佛山\"\"深圳\"\"東莞\"。
(5) 切換到設(shè)計頁面eg3_1.aspx,雙擊【添加】按鈕,添加Click事件的處理代碼如下。
protected void Button1_Click(object sender, EventArgs e)
{
//將輸入文本框的值添加到下拉列表框中
DropDownList1.Items.Add(TextBox1.Text);
}
(6) 保存文件,運行程序,進入如圖3-3所示的界面。
圖3-3 運行界面(1)
。7) 在輸入文本框中輸入要添加的城市,如\"湛江\",單擊【添加】按鈕。查看下拉列表框中的選項,發(fā)現(xiàn)除了剛才添加的城市\(zhòng)"湛江\"外,之前的4個選項又重復(fù)添加了一次,如圖3-4所示。
圖3-4 運行界面(2)
這是因為當Web頁面第一次執(zhí)行時,觸發(fā)了Page對象的Load事件,給下拉列表框添加了4個選項,當單擊【提交】按鈕時,Page對象的Load事件被再次觸發(fā),所以又重復(fù)地添加了這4個選項。
解決這個問題的方法一:在Page對象的Load()事件中,用IsPostBack屬性來判斷Web頁面是否是第一次被加載,修改后的代碼如下。
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
//往下拉列表框中添加值
DropDownList1.Items.Add(\"廣州\");
DropDownList1.Items.Add(\"佛山\");
DropDownList1.Items.Add(\"深圳\");
DropDownList1.Items.Add(\"東莞\");
}
}
解決這個問題的方法二:將Load事件改為Init事件,問題也可以得到解決,因為Init事件對同一頁面在初始化時只觸發(fā)一次,當單擊【添加】按鈕時,Init事件將不再被觸發(fā)。
……