您當前位置>首頁 » 新聞資訊 » 網站(zhàn)建設 >
【使用(yòng)ASP.NET開(kāi)發Web項目】第一(yī≈αΩ±)課——初識ASP.NET,創建第一(yī)個(gè)ASP.NET程序
發表時(shí)間(jiān):2019-10-9
發布人(rén):葵宇科(kē)技(jì)
浏覽次數(shù):188
知(zhī)識點:理(lǐ)解 ASP.NET 的(de)概念和(hé)優勢、 會(€™huì)創建 ASP.NET Web Form 程序、 理(lǐ)解 ASP.NET Web F£₹orm 程序的(de)執行(xíng)階段、 會(huì)使用(yòng)代碼內(nèi)嵌和(hé)代碼♠↕₩後置兩種方式進行(xíng)編碼。
1、網站(zhàn)開(kāi)發基礎了(le)解
1.1 網站(zhàn)開(kāi)發各環節組成
1.2 開(kāi)發網站(zhàn)需要(yào)的(de)知(zhī)識結構★'&'
(1)網站(zhàn)開(kāi)發前台頁面技(jì)術(sh ≠ù)
- 頁面設計(jì):HTML、DIV+CSS
- 頁面特效:JavaScript、jQuery
(2)OOP編程核心公共技(¶∑σjì)能(néng)
- C#基礎語法與程序邏輯
- 面向對(duì)象編程基礎
- SQL Server數(shù)據庫開(kāi)發基礎
- ADO.NET數(shù)據訪問(wèn)技(jì)術(shù)
(3)網站(zhàn)開(kāi)發後台專門(mén)技(jì)術≠♣>(shù)
- ASP.NET開(kāi)發基礎
- 基于WebForm開(kāi)發企業(yè)網站(zhàn♦→)
- MVC框架學習(xí)
- EF框架學習(xí)
- 基于MVC+EF開(kāi)發企業(yè)網站(zhàn)≈✘↔↕
2、 ASP.NET概述
通(tōng)過學習(xí) HTML+CSS我們會(huì)制(zhì)造靜(jìn'∑εg)态頁面了(le)。靜(jìng)态頁面的(de)最大(dà)的(de)優點是(shì)速度快(kuài)♣∞™xff0c;可(kě)以跨平台,跨服務器(≥∏qì)。在早期網站(zhàn)建設大(dà)多(duō)都(dōu)•≈×是(shì)靜(jìng)态頁面制(zhì)作(zuò)的(de),靜<↕₩(jìng)态頁面的(de)網址是(shì)以.HTM、HTML☆≥≠★ 等為(wèi)後綴的(de),在這(z♠₽₹hè)種靜(jìng)态網站(zhàn)上(shàng)也(yě)可( '↕kě)以由動态效果,像滾動字幕ÿ£↕ε¥0c;GIF 格式的(de)動畫(huà),或是(shì)FLASH ≤ ×,這(zhè)些(xiē)視(shì)覺上(shàng)的(de)動态效果并不≥©<(bù)就(jiù)是(shì)動态頁面,他(tā)們是(shì<ε)截然不(bù)同的(de)概念。所謂動态網頁,就(jiù)是(shì)說(shuō) ∏該網頁文(wén)件(jiàn)不(bù)僅具有(yǒu) ♠>↕HTML 标記,而且含有(yǒu)服務器(qì)端&±£的(de)腳本程序代碼, 實現(xiàn)操作(zu≤≥φò)數(shù)據庫、實現(xiàn)交互等功能(néng)。動态網頁能(néng)根據不(bù)同的(de)時(shí)間(ji≥©φΩān),不(bù)同的(de)來(lái)訪♠ >者顯示不(bù)同的(de)內(nèi)容,而且動态網站(zhàn)更新方便×€≈•xff0c;一(yī)般在後台直接更新的(de)γ c;并不(bù)需要(yào)人(rén)工(gōng)手動修改代碼。
制(zhì)造動态頁面的(de)主要(yào)技(jì)術(shù)有(yǒu) ASP.NET、φ™JSP 、 PHP 等,本課程主要(yào)講$<÷γ解 ASP.NET 技(jì)術(shù)。本章(zhāng),我們初步認識ASPσ ↓≈.NET,了(le)解它的(de)概念和(hé)優勢ε↔δ,掌握 ASP.NET Web For©×★m 的(de)編碼方式等內(nèi)容。
2.1 ASP.NET的(de)概念
開(kāi)發 Web 程序的(de)主要(yào)技(jì)術(s§©"hù)有(yǒu) ASP.NET、JSP 和(hé) PHP。其中 ASP.÷ α↔NET 是(shì)微(wēi)軟公司整個(gè).NET Frame★δ Work 的(de)一(yī)部分(fēn),使用¶→§φ(yòng)它可(kě)創建動态交互的(de) Web 頁面。其中,A≤♥≥'SP 的(de)全稱是(shì) Active Server Pages(動态服務δ↕π器(qì)頁面),是(shì®←φε)一(yī)種使嵌入在網頁中的(de)服務器(qì)腳本可(k• ě)由服務器(qì)執行(xíng)的(de)技(jì)術(shù)。
ASP.NET、.NET Frame Work 及對(duì)應的(de)集成開(kāi)發環境←φ Visual Studio 一(yī)直以來(lái)都(dōu)在不(bù)斷地(dì)更新,這(zhè)些(xiē)更新包括.↔≤→NET 框架類庫的(de)不(bù)斷擴充、不(bù)斷納≈♣γ入新的(de)語言特性等。.NET Frame Work 2.0 的(de)₽∏出現(xiàn)标志(zhì)著(zhe).NET Frame Work 真正走向成熟↑↕c;同時(shí)也(yě)說(shuō)明(míng)了£φ↓(le) ASP.NET 技(jì)術(shù)的(de)成熟與穩定。為∑∏(wèi)了(le) 支持 ASP.NET 的(de)開(kāi)發,Visual↓↕ Studio 也(yě)在不(bù)斷地(dì)升級版本。
2.2 ASP.NET的(de)優勢
作(zuò)為(wèi)微(wēi)軟公司.NET Frame Work 的(de)一(yī)部分β<←♦(fēn),ASP.NET 技(jì)術(shù)延續了(le) Miγ¥crosoft 的(de)一(yī)貫優勢,即開(kāi)←≥λ↑發效率高(gāo)、強大(dà)的(de) IDE(Integra¥♥✘ted Development Environment, 集成開(kāi)發環境)β 設計(jì)工(gōng)具的(de) 支持。除了(le)這(zh≥∏è)些(xiē),ASP.NET 還(hái)具備>✔以下(xià)優勢。
1)與浏覽器(qì)無關
無論使用(yòng)何種版本的(de)浏覽器(qì)訪問(wèn) ASP.NET > 應用(yòng)程序,呈現(xiàn)的(de)結果都(dōu)一(§→≠yī)緻。ASP.NET 遵循 W3C标準化(huà)組織推→<λ薦的(de) XHTML 标準生(shēng)成頁面的(de)代碼,¥↓;而 XHTML 标準被目前所有(yǒu)主流浏覽器(qì)支持。
2)編譯後執行(xíng),♦λ♠;運行(xíng)效率高(gāo)
代碼編譯是(shì)指将代碼“翻譯”成機(jī)器(qì)語言。ASP.NET 先>₩Ω把代碼編譯為(wèi)微(wēi)軟中間(jiān)語言,然後由即時(shí)編譯器¶₹(qì)進一(yī)步編譯成機(jī)器(qì)語言。編譯好(hǎo)↑∞γ的(de)代碼再次運行(xíng)時(shí)不(bù)需要(yà≤≥↔o)重新編譯,極大(dà)地(dì)提↔α高(gāo)了(le)Web 應用(yòng)程序的(de)運₽↕行(xíng)效率。
3)易于部署
将必要(yào)的(de)文(wén)件(jiàn)複制(zhì)到(dào) Web≈¶± 服務器(qì)上(shàng),ASP.NET 應用(yòng)程序即可(↑♠↑★kě)以部署到(dào)該服務器(qì)上(shàng)。不α©ε(bù)需要(yào)重新啓動服務器(qì),甚至替換運行(xíng)的≠ ↑(de)編譯代碼時(shí),也(yě)不(bù)需要(yào)重新啓動 Web £πδ服務器(qì)。
4)豐富的(de)可(kě)用(yòng)資源
ASP.NET 可(kě)利用(yòng)整個(gè).NET 平台的(de)資源≠§♦Ωc;包括.NET 框架類庫和(hé)數(shù)據訪問(wèn)解決方案等。ASP.NET本 §身(shēn)提供了(le)大(dà)量的(de)控件(α>"™jiàn),包括與傳統 HTML 代碼對(duì)應的(✘&§de) HTML 控件(jiàn)和(hé)重新封裝的(de) Wε•eb 控件(jiàn)。
5)支持多(duō)層開(kāi)發
ASP.NET 支持多(duō)層開(kāi)發,從(cóng)而改變原來(lái) Web¥↕ 項目開(kāi)發代碼混亂,難以管理(lγǐ)的(de)狀況,使得(de) Web 項目開(kāi) ∞σσ發邏輯更清晰,管理(lǐ)維護更方便。
6)邏輯代碼和(hé)設計(jì)代碼分(fēn)離(lí)
ASP.NET 将邏輯代碼放(fàng)于單獨的(de)文(wén∞∏Ω)件(jiàn)中,将 Web 界面元素和(hé)程序邏輯分(fēn)開(kāi)顯✔↕≠示,這(zhè)樣可(kě)以是(shì)代碼結構更加清晰 ₹ff0c;方便維護和(hé)閱讀(dú)。
3、創建第一(yī)個(gè)ASP.NET程序
3.1 ASP.NET WebForm的(de)概®λ₽念
ASP.NET WebForm 是(shì)微(wēi)軟的(de)開(π♥kāi)發團隊為(wèi)開(kāi)發者設計(jì)的(de)一(yī)個(g耕)在可(kě)視(shì)化(huà)設計(jì)器(qì)中拖放"♠&↑(fàng)控件(jiàn)、編寫代碼響應事(shì)件(jiàn)的(de∞¶&π)快(kuài)速開(kāi)發環境。在 WebForm 中¶ ♠₹c;微(wēi)軟将 ASP.NET 的(de)開(kāi)發模型與 λ₹₽σWinForm 統一(yī)起來(lái),提供了(le)類似于 WinForm' 的(de)控件(jiàn)、事(shì)件(jiàn¥©)驅動模型,使 ASP.NET 應用(yòng)程序的(de)開¶λ♣(kāi)發體(tǐ)驗與 Win Form應用(yòng)程序• "高(gāo)度一(yī)緻。
在.NET Frame Work 3.5 SP1 發布前,ASP.NET Web→•γ§Form 一(yī)直是(shì)微(wēi)軟官方提供的(de)唯一(yī) Ω的(de) ASP.NET開(kāi)發框架。在.NET Frame Wor♠£ k 3.5 SP1 中,微(wēi)軟提∑ ☆ 供了(le)另一(yī)種 ASP.NET 的(de)開(kāi)發框架即 ASP.NET★∏₹ MVC。
3.2 創建WebForm應用(yòng)程序
開(kāi)發 ASP.NET Web Form 程∏γ序的(de)一(yī)般過程:創建解決方案(.sln) →"♥ 添加網站(zhàn) → 添加 Web → 窗(chuān≈g)體(tǐ) → 編寫代碼 → 調試運行(xíng<™)。
創建 ASP.NET Web Form 程序,實現(xià ≤→♦n)當用(yòng)戶點擊按鈕,頁面輸出“H™φ¥ello World”的(de)功能(néng)。實 現(¥ ↑xiàn)步驟如(rú)下(xià)所述。
步驟 1:打開(kāi) Visual Studio 2017,點擊菜•δ✘ 單欄【文(wén)件(jiàn)】——【新建項目】★β↕ff0c; 在彈出的(de)【新建項目】窗(chuāng)口中£♣∞÷,在左側展開(kāi)“其他(tā)項目類型”列表∏→πc;在列表中選擇“Visual Studio 解決方案”。在窗(ch♠↕uāng)口頂端的(de).NET 框架版本下(xià)拉列 ♣✘表中選擇“.NET Framework4.5”,輸入解決方案名稱和≠δ(hé)位置後, 單擊【确定】按鈕。
步驟 2:在“解決方案資源管理(lǐ)器(qì)”窗(chuāng)口中₹★βc;右擊“解決方案”,在快(kuài)捷菜單中選擇“添加” → “新建¶®≈項目”,如(rú)圖所示。
步驟 3:彈出【添加新項目】窗(chuāng)口,在窗(chuāng)口的(de)左側選擇<¥<↓開(kāi)發語言是(shì)“Visual C#”,在窗(cπ "αhuāng)口的(de) 右側選擇“ASP.NET Web應σ'§用(yòng)程序(.NET 應用(yòng)程序)♦♦✔”,最後給您的(de)Web站(zhàn)點起個✘>♠>(gè)名字,這(zhè)個(gè)案例裡(lǐ),我們起的(d₹∏e)是(shì)“HelloWeb”,并浏覽選擇 Web 站(•∑zhàn)點的(de)保存位置後,最後單擊【确定】按鈕
在彈出的(de)【新建ASP.NET Web應用(yòng)程序 - Hell←↓±€oWeb】窗(chuāng)口中,點擊選擇【空(kōng)】ÿ∏©♣ 0c;然後再單擊【确定】按鈕
在解決方案中添加了(le)名稱為(wèi)“HelloWeb”的(de✘φσ↓)站(zhàn)點後,解決方案資源管理(lǐ←☆♣)器(qì)中的(de)目錄結構如(rú)圖所示。Web.config 是(shì) XML 文(™↔✘↓wén)件(jiàn),用(yòng)于網站(zhàn)的(dσ≥±e)配置。
步驟 4:在解決方案裡(lǐ),右擊“HelloWeb”的(de)網站(zhàn),在快(k£♣uài)捷菜單中選擇“添加” → “Web窗(chuāng)體(tǐ)”。
此時(shí)會(huì)彈出一(yī)個(gè)【指定項名稱】,默認名稱WebFo λrm1,單擊【确定】按鈕。
此時(shí),會(huì)自(zì)動生(shēng©€≠₩)成一(yī)個(gè)WebForm1.aspx文(wén)件(jiàn)×↓"✔f0c;并在VS程序中打開(kāi),“WebForm1.aspx”即為(wèi)∏∞₹→創建的(de)第一(yī)個(gè) Web 頁面。
步驟 5:在“WebForm1.aspx”頁面,進行(xíng)h¶ε₩ tml代碼編寫,這(zhè)裡(lǐ)隻簡單的(de)寫了(le)title标簽設置&×網頁标題,并在body裡(lǐ)輸出一(yī)句話(huà)“Hello Worlβγ$d”。
步驟 6:啓動運行(xíng)調試,點擊菜單欄【↔♦ ×啓動】
在浏覽器(qì)中查看(kàn)網頁效果。
3.3 快(kuài)速創建WebForm應用(yòng)程序
将上(shàng)面的(de)步驟簡化(huà)。
第一(yī)步:打開(kāi)VS後,在菜單欄單擊【文(wén)件(jiàn)】—±→—【新建項目】,在彈出的(de)【新建項目】窗(chuāng)口中,☆∞©¶依次選擇左側的(de)Visual C#,中間(jiān)部分(fēn)± ™的(de).NET 框架版本下(xià)拉列表中選擇“.NET Framework4.5”↑φf0c;程序選擇“ASP.NET Web應用(yòng)程序&∑★↑✔#xff08;.NET 應用(yòng)程序)”β©πf0c;給自(zì)己的(de)項目起個(gè)名字,浏覽好(hǎ₩φ↔×o)項目存放(fàng)的(de)位置,可★₹♠(kě)以選擇新創建一(yī)個(gè)解決方案,最後單擊【确定】按鈕。
在彈出的(de)【新建ASP.NET Web應用(yòng)程序 - HelloWeb】窗(chuāng)口中,點擊選擇【空(<$≠kōng)】,然後再單擊【确定】按鈕。
第二步:在解決方案裡(lǐ),右擊“HelloWorld”的(de)網站(zhàn)<£πγf0c;在快(kuài)捷菜單中選擇“添加” → “Web窗(chuāng )體(tǐ)”。
此時(shí)會(huì)彈出一(yī)個(gè)【指定項名稱】✔>xff0c;默認名稱WebForm1,可(kě)以根據∞©需要(yào)自(zì)行(xíng)修改項名稱,這(zhè)裡(lǐ)修改為(w♠←<↑èi)“index”,單擊【确定】按鈕。
第三步:在解決方案裡(lǐ),右擊“index.aspx”,在快(kuài)捷菜單中選擇“查♥<"↑看(kàn)設計(jì)器(qì)”。
第四步:在設計(jì)器(qì)界面,從(cóng)工(gō¥φγng)具箱裡(lǐ)依次拖入Label控件(jiàn)和(h♥≥✔•é)Button控件(jiàn),并在屬性面闆修改他(tā)們Ω♠&的(de)ID屬性、Visible屬性、Text屬性。(注意& ε±#xff1a;如(rú)果VS界面沒有(yǒu)找到(dào)工(☆↔gōng)具箱、屬性面闆,可(kě)以在菜單欄視(shì)圖裡×<€"(lǐ)找到(dào)他(tā)們)
第五步:在設計(jì)器(qì)界面,雙擊【确定】按鈕,進★δ入代碼文(wén)件(jiàn),在按鈕的(de)Clic↕k事(shì)件(jiàn)中編寫代碼:
protected void BtnSure_Click(object s↓£♦∞ender, EventArgs e)
{
lblI≈÷₹✘nfo.Visible = true;
≠±¶ lblInfo.Text = "hello wo♠ rld!";
}
第六步:啓動運行(xíng)調試,點擊菜單欄【啓動】α<
總結:ASP.NET WebForm 的(de)應用(yòng∑≤π)程序與大(dà)一(yī)所學的(de) WinForm 的(de)應用(yòng)程序類$≤似,都(dōu)使用(yòng)了(le)控件(j"φ←iàn)+事(shì)件(jiàn)驅動模型,這(zhè)正是(shì •±)使用(yòng) ASP.NET WebForm 技(jì)術(♣$shù)編寫 Web 程序的(de)優秀之處。
4、 ASP.NET 程序的(de)運行(xíng)機(jī)制(zhì)
4.1 ASP.NET 程序的(de)執行(xíng)階段
ASP.NET 是(shì)一(yī)個(gè) Web 開(kāi)發模型,能(n ★ΩΩéng)創建動态可(kě)交互的(de) Web 頁面。ASP.NET 程序的(de)"π₹執行(xíng)方式一(yī)般分(fēn)為(wèi)以下(xià)幾個(g©¶è)階段:
(1) 使用(yòng)動态 Web 開(kāi)發技(jì)術(shù),如(rú)↓✘ ASP.NET,編寫 Web 應用(yòng)程序'↓xff0c;即動态頁面,并部署到(dào) Web服務器(qì)端;∏♠φ;
(2) 客戶端通(tōng)過浏覽器(qì)請(qǐng)求該動™∑₽态頁面;
(3) Web 服務器(qì)定位該 Web 應用(yò₩β¥ng)程序;
(4) Web 服務器(qì)根據客戶端的(de)請(qǐng)求®→c;對(duì) Web 應用(yòng)程序進行(¶₩ xíng)編譯或解釋,并生(shēng)成 hλ★εtml 流。将生(shēng)成的(de) html 以流的(de)形式返回給客&$戶端;
(5) 客戶端浏覽器(qì)解釋 html 流,并顯示為(wèi∞✘×) Web 頁面。
網站(zhàn)的(de)運行(xíng)原理(lǐ):
當請(qǐng)求發送至 Web 服務器(qì)并被其接收後,服務器(qì)會(huì)判斷請(qǐng)求文(wén)件(jiàn)的(de)☆∞♠↓類型:
- 如(rú)果是(shì)靜(jìng)态文(wén)件(jiàn λ±), 如(rú) html、jpg、gif 和(hé) txt 等,服務器(qì)會(huì)自(zì)行(xíng)©÷∏根據目錄找到(dào)文(wén)件(jiàn)并發送給客戶端。
- 如(rú)果是(shì)動态文(wén)件(jiàn), 如(rú) aspx,服務器(qì)會(huì)通(tōng)過 aspnet_isapi.dll 将請(qǐng)求轉交給ASP.NET 運行(xíng)時(shí)環境進行(xíng)處理(lǐ)。
ASP.NET 會(huì)先檢查代碼是(shì)否已經被編譯。如(rú)果沒有(≈±yǒu),則将代碼編譯成 MSIL(Microsoft Intermediate Language, γσ微(wēi)軟中間(jiān)語言)&™₹≈δ#xff0c;然後由 JIT((Just-in-time:即時(shí))編譯器(qì)進一(yī)步編譯成機(jī)器(qì)語言執行(xíng)。÷♥"其中,JIT 并非一(yī)次完全編譯,而是(shì)調€©<用(yòng)哪部分(fēn)代碼就(jiù)編譯哪部分(fēn)π©c;這(zhè)樣用(yòng)戶等待時(shí)間(jiān)更短(duǎn©α≈¥)。同時(shí),編譯好(hǎo)的(de)代碼再次請(q±∏δǐng)求運行(xíng)時(shí)不(bù)需要(yào)重新編譯÷"∑→f0c;極大(dà)提高(gāo)了(le) Web 應用(yòng)程序的(de)性能(néng)。這(zhè)✘♣種先将代碼編譯成中間(jiān)語言,執行(xíng)時(shí)再編譯成機(j"α↑ī)器(qì)語言的(de)過程稱為(wèi)二次編譯。
4.2 ASP.NET 的(de)服務器(qì)
ASP.NET 程序需要(yào)使用(yòng) Web 服務器(qì)作(zuò)為♣(wèi)發布平台,ASP.NET 使用 ∞(yòng) IIS 作(zuò)為(wèi) Web 服務器(↓£>₹qì)。 IIS(Internet Information Ser≥Ωvice,Internet 信息服務)是(shì)微♣±(wēi)軟開(kāi)發的(de) Web 服務器(qì),βπσ;它基于 Windows 操作(zuò)系統ÿε 0c;操作(zuò)方便,功能(néng)強大(dà)。
實際上(shàng),我們在開(kāi)發階段并不(bù)用(yòng)配置 IIS₽>₹,我們隻需要(yào)像 WinFor'↓∏ms 開(kāi)發那(nà)樣編碼,然後單擊運行(xíng)就(jiù)可(kě)☆✘∏以了(le)。微(wēi)軟在 Visual Studio 中內(φ←¥nèi)置了(le)一(yī)個(gè)輕量級的(de) Web 服務器(✘λqì),運行(xíng)應用(yòng)程序時(shí₹≠),将會(huì)默認啓動它,并在狀态欄中出現(xiàn)圖标,右擊該圖标,在彈出的(★>∑de)快(kuài)捷菜單中選擇“顯示 所有(yǒu)應用(yòng)程序”選項,≈≠&©;可(kě)以查看(kàn)當前正在運行(xíng)的(de)站(zhàn)點信息Ω≤™c;如(rú)圖所示。
4.3 ASP.NET WebForm的(de)事(shì)件(jiàn)驅動模型
ASP.NET WebForm 和(hé) WinForm 一ε☆→®(yī)樣,都(dōu)使用(yòng)了(le)控件(ji≥≠àn)+事(shì)件(jiàn)驅動模型。但(dàn) ASP.NET Weπ♦bForm 實現(xiàn)的(de)本質完全不(bù)同。在 ASP.NET WebForm 中由用(yòng)戶操作(zuò)引發的↑✔€(de)事(shì)件(jiàn)中,觸發事(shì)件(jiàn)的<£∏(de)操作(zuò)在客戶端,處理(lǐ)有(y✘<ǒu)可(kě)能(néng)在服務器(qì)端。在實際應用§β(yòng)中,客戶端和(hé)服務器(qì)端λλ往往是(shì)不(bù)同的(de)機(jī)器(qì);而在£₹ WinForm 中,事(shì)件(jiàn)的(de)觸發和(hé)處 ©理(lǐ)都(dōu)在執行(xíng)程序的(de)機(jī)器(qì)上(shàng)進行(x♥≠íng)。
在 ASP.NET WebForm 中,用(yòng)戶操作(zu€δ∞ò)觸發一(yī)個(gè)事(shì)件(jiàn★₽≈ )有(yǒu)可(kě)能(néng)會(huì)産生(shēng)一(yī)≈Ω✔次新的(de) HTTP 請(qǐng)求。如(rú)果産生(shēngδφ€)新的(de)請(qǐng)求,那(nà")麽服務器(qì)端在對(duì)請(qǐng)求應答(dá)時(shí),對(duì)用(y¶☆òng)戶觸發的(de)事(shì)件(jiàn)進行(xíng)處理(lǐ),将處理↕↓(lǐ)結果生(shēng)成新的(de)頁面傳遞給浏覽器(qì),浏覽₹÷≥器(qì)自(zì)動刷新,重新加載整個(gè)新的(de)頁面ÿ↓ΩΩ•0c;我們把這(zhè)個(gè)過程稱為(wèi)回發α ±≤xff08;postback)。
示例練習(xí):WebForm 和(hé) WinForm實現(xiàn)對(duì)比
第一(yī)步:在已有(yǒu)的(de)項目中,新添加一(yī)個(gè)We≠b窗(chuāng)口,并在設計(jì)器(qì)界面,α←≈;拖放(fàng)一(yī)個(gè)Button控件(jiàn),同時(✔πλshí)修改ID屬性為(wèi)“btnAdd”。再拖放(fàng)一(y☆♦☆↔ī)個(gè)Label控件(jiàn),修改✔'★其ID屬性為(wèi)“lblInfo”。
第二步:雙擊【Button】按鈕,進入Click事(shì)件(jiàn)代碼編寫
int i = 0;
protected vo">"¶id btnAdd_Click(object sender, Eve♦✘ntArgs e)
{
>£ i++;
$• lblInfo.Text = "累計(jì)到(dào):☆≥★ 4; + i;
}
第三步:啓動運行(xíng)程序,在頁面,單擊【₩₩γ♦Button】按鈕,觀察累計(jì)變化(huà)。
第四步:在當前解決方案中,新添加一(yī)個(gèΩφδ→)窗(chuāng)體(tǐ)項目
第五步:在窗(chuāng)體(tǐ)界面,添加兩個(gè)控件(jiàn)Button和(★αhé)Label控件(jiàn)
第六步:雙擊Button控件(jiàn),進入代碼編寫模式
int i = 0;
private void buttoβδ♣♠n1_Click(object sender, EventArgs e)
{σ€§σ
i++;
la∏¶©×bel1.Text = "累計(jì)到(dào) ₩:" + i;
}
第七步:在解決方案資源管理(lǐ)器(qì)裡(lǐ),右鍵≤≥單擊“WindowsFormsApp1”,在彈出的(de)快(kuài)捷菜單項&≤裡(lǐ)單擊【設為(wèi)啓動項】
第八步:啓動運行(xíng),預覽,在窗(chuāng)體(t σǐ)界面,單擊【Button】按鈕,觀察累計(jì)變化(huΩ>à)。
案例思考:在 WinForm 和(hé) WebForm 兩種程序中,輸入同樣的(deβ₽)代碼,為(wèi)什(shén)麽執行(xíng)的(de)結果不(bù)一 $∞®(yī)樣?
5、 ASP.NET WebForm 的(de)編碼方式
ASP.NET 有(yǒu)兩種編碼方式:代碼內(n✘₽$èi)嵌和(hé)代碼後置。
5.1 代碼內(nèi)嵌
把所有(yǒu)的(de)代碼都(dōu)寫在.aspx 文(wé•★♣n)件(jiàn)中,不(bù)需要(yào↑≤>₹).cs 文(wén)件(jiàn),然後把 c#代碼π≈γπ寫在<% %>或者<script lan≥δguage=”c#” runat=”server”></script&∞¥αgt;之間(jiān)。
示例練習(xí):使用(yòng)代碼內(nèi)嵌的(de)方式在頁面上(shàng)γ∞ ε顯示 1 到(dào) 100 之間(jiān)的(de)和(hé)。
<%@ Page Language=÷α♣→"C#" AutoEventWireup="trueγ✘$4; CodeBehind="WebForm1.aspx.§← ®cs" Inherits="WebApplication1.WebForm✔€✔1" %>
<!DOCTYPE html>×"β;
<html xmlns="ht↑λtp://www.w3.org/1999/xhtml">
<head♦← runat="server">
<meta http-equ$∑§iv="Content-Type" ∑↓>content="text/html; chaεεβ↑rset=utf-8"/>
<title&g✘•t;</title>
</head>
<b ★★↔ody>
<form id="fo©≤rm1" runat="server"&∞→≥πgt;
<div>
α✘ <script language="c#" runa ♠t="server">
& § int sum = 0;
€∞λ" </script>
<%for≤" (int i = 1; i <= 100; i≤εΩ43;+)
{
•φ sum + 61; i;
}
%>
$&↕♥ <h2>1到(dào)100之間(jiān)的(d'★₹$e)和(hé)是(shì):<span 'γstyle="color:red"><%=••σσsum %></span></h2≠¥>
</div>
</form> •
</body>
</html>
頁面執行(xíng)效果:(注意:初次編譯時(shí),速度會(huì)比較慢(¥π≠màn))
代碼分(fēn)析:<%=sum %>是(shì)<%Re'₩sponse.Write(sum)%>的(de)簡化(huà),×↕;表示在頁面輸出變量 sum,Response 是(shì) ASP.NET 的(dשe)系統對(duì)象,會(huì)在下(xià)一(yī)<÷章(zhāng)學習(xí)。
5.2 代碼後置
代碼後置是(shì)微(wēi)軟的(de)一(yī)項技(j쀩)術(shù),是(shì)編寫 ASP.NET 常用(yòng)的(d☆≠£↔e)編碼方式。具體(tǐ)方式見(jiàn)本章(zhāng)節的(de)第一(yī)個(gèα)示例,在該示例中,頁面文(wén)件(jiàn).aspx♥δ₽≈ 和(hé)代碼文(wén)件(jiàn).cs 兩個(gè)文(wén)件(jiàn)關聯構↔β成一(yī)個(gè)頁面。一(yī)般情況下(xià)'≈φ☆,.aspx 的(de)源文(wén) 件(jiàn)中沒有(yǒu) c#代碼,隻有(yǒu)控件(&®€jiàn)和(hé) HTMl 代碼,而在.cs 文(wén↔©<™)件(jiàn)中編寫相(xiàng)關的(de)服務器(qì)端代碼,這(₹βzhè)種将控件(jiàn)和(hé)布局與代碼進行(xíng)δ©₩≤分(fēn)離(lí)的(de)技(jì)術(shù)稱為(wèi)代碼後置。代碼後置的(de)好(hǎo)處就(jiù)是(shì)代碼和(hé)頁面內♣σ₽↑(nèi)容分(fēn)離(lí),使代碼更清晰。
示例練習(xí):使用(yòng)後置代碼的(de)方式,在頁面上(shàng)輸出 1" 到(dào) 100 之間(jiān)的(de)和(hΩ₽☆λé)。
操作(zuò)步驟:在上(shàng)一(yī)個(gè)示例中,在項目方案資源管理(l←αǐ)器(qì)中,新添加一(yī)個(gè)Web窗(chuāng)體(tǐ✔×™),并雙擊打開(kāi)他(tā)對(duì)應的(de).cs文(wén)♥÷™£件(jiàn),
using System;
using System.Collec↓₹tions.Generic;
using System.Linq;
us™•∏ing System.Web;
using System.Wσ$eb.UI;
using System.Web.UI.Web<♣αControls;
namespace WebApplicatio→♠n1
{
public partial class WebForm2 ★: System.Web.UI.Page
{
±β protected void Page_Loa≠•d(object sender, EventArgs e)
¶≈ {
int sum = 0;
±↕ for(int i =1; i<=100; iσ→₩3;+)
{
sum +±<≥= i;
}
Respons'>e.Write("<h2>1到(dào)Ω♥±σ100之間(jiān)的(de)和(hé)是(shì):&l∏σt;span style='color: red'>"ελ3;sum+"</span>&l→₽≤✘t;/h2>");
}
}
}©↓π
代碼分(fēn)析:代碼中“Page_Load”方法是(shì)在加載頁面時(shí)觸發執行(xíng)的(de)<β,即由 Page 對(duì)象的(de) Load 事(shì)件(jià n)觸發執行(xíng),Page 對(duì)象是(shì) ASP.NET 的(→∞εde)系統對(duì)象,會(huì)在下(xià)一(yī)章(γ>zhāng)學習(xí)。
運行(xíng)某個(gè)頁面時(shí),可(kě)以在解決方案資源管理(l•βǐ)器(qì)中右鍵單擊頁面,在彈出的(de)快☆ (kuài)捷菜單中選擇“在浏覽器(qì)中查看(kàn)”;也(α∑yě)可(kě)以右鍵單擊需要(yào)作(zuò)為(wèi)起始頁的(de)文(wé¶ n)件(jiàn),在彈出的(de)快(kuài)捷菜單中選擇“設為(wèi)起 Ω始頁”,按“F5”鍵運行(xíng)網™∞σ∑站(zhàn)。
=====★↕←61;=====這(zhè)裡(lǐ)是<α(shì)結束分(fēn)割線==&'✔#61;========&≈♦≤#61;==