You are on page 1of 80

T Hc Microsoft ASP.

NET
Ro Trc
Hnh trang vo Kha Hc ASP.NET

Bn quyn ca: www.vovisoft.com

Ta nn chun b sn mt s kin thc cn bn v lp trnh hay pht trin mng khi bc vo kha hc ny th tt hn, v tuy bn khng cn phi bit v ASP c in (classic ASP) nhng, nh chng ti trnh by trong phn FAQ trang Cho Mng u kha hc, bn cn: tham kho cc bi vit trong kha Hc Microsoft .NET ca thy L c Hng lm quen vi .NET framework, Visual Basic.NET, Visual Studio.NET. VB.NET s c dng lm ngn ng mc nh (default) trong cc th d, cc bi tp hay cc d n ca kho. bit tng qut v HTML (HyperText Markup Language) khi ta cn trnh by cc trang web trn browser. Browser c dng trong kho ny l IE6 (Internet Explorer Version 6). quen thuc vi cc h iu hnh mi hin nay (Operating System) nh Windows 2000 (Professional hay Server) hay Windows XP (Home hay Professional), cng nh quen thuc cch qun l cc ng dng lin h nh Web Server (Personal Web Server hay Internet Information Server - IIS) v cc c s d liu (database) MS SQL Server 2000 xin tham kho cc bi vit v MCSE ca thy V Hu Tn, thy Tng Vinh Ti v lp MCSE. vi kin thc cn bn v XML lin quan n vic chuyn thng tin t ch ny qua ch khc. V XML, bn nn tham kho cc bi vit XML, K Thut Nng Ct trong Tng Lai ca thy L c Hng v cc bi t hc XML ca c Bch Tr cng trn mng Vovisoft ny).

Tht ra, ta u lm kh nhau chi nhng phi ro trc n sau nh vy l v con ng ta i tm hiu v ASP.NET hi lt lo gp ghnh. Mt khi ta pht trin mng vi ASP.NET, ta phi vn dng tt c cc ng dng lin h v kt hp mi th vo nhau. cng l l do ti sao kho hc ny ch nhm vo cc lp trnh vin c kinh nghim pht trin mng. Tuy vy, chng ti s c gng trnh by mt cch n s, ngn v gn khi cp n cc ng dng k trn trong cc bi hc c lin quan n bn (nht l bn no thch th trong vic pht trin mng v mi lm quen vi ASP.NET) d dng theo di v tm hiu v ASP.NET.

Nhu Liu (Software)


Nhu liu (phn mn hay software) ti thiu phi c hc kho ASP.NET thnh cng: V h iu hnh (Operating System): ta nn dng Windows 2000 (Professional hay Server) hay Windows XP (Home hay Professional). L do chnh l cc versions ca Windows ny h tr Unicode v c th ci t do Internet Information Server (IIS Version 5) h tr ASPX ta dng cho ASP.NET v IIS c cung cp min ph trong cc h iu hnh k trn. Ngoi ra, bn cn phi c .NET framework SDK (Software Development Kit) ti xung t mng Microsoft. Chng ti s trnh by vic at3i xung u v cng cuc b tr nh th no bi hc s 1. Nu nh bn c v ci t Microsoft Visual Studio.Net (VS.NET) theo s hng dn cc bi hc ca kha Hc Microsoft .NET th cng tt na. V ri rc trong cc bi hc v ASP.NET, chng ti cng trnh by mt s th d dng VS.NET cho ASP.NET mc d tht ra ch cn c Notepad thi cng ... d xi sut nm. Cui cng, bn cn phi c v ci t thnh cng mt c s d liu (Database) vng mnh tng ng vi OLE DBcompliant database system nh SQL Server 2000 dng lu tr nhng thng tin cn thit. Tuy nhin, ta cng c th dng MS Access 2000 tm thi thay th SQL Server 2000 cho cc th d trong kho phn nhiu trnh by cc ni v cc kiu thu thp d liu hay thng tin xuyn qua SQL Server 2000.

Ti sao ta li quan tm v pht trin mng vi ASP.NET


Ta phi cng nhn mt iu l .NET Framework v cc ng dng ca n v ang to mt cuc cch mng k thut trong cng ngh Tin Hc (Information Technology), thay i tn gc r cc kiu mu lp trnh hay pht trin v trin khai mng trn th gii v do to mt vn hi mi p ng mi yu cu khn thit cho cc ngnh ngh k thut v thng mi hin nay cng nh vch mt hng i vng chc v di lu cho tng lai Tin Hc. ASP.NET chnh l mt trong nhng ng dng quan trng nht pht trin v trin khai mng mt cch d dng cha tng ... thy t xa n nay. Tht vy, khng phi l

chng ti khoi ... n u, hy lng nghe th chnh Microsoft ni v ASP.NET nh th no: 'ASP.NET is a revolutionary programming frramework that enables the rapid development of powerful web applications and services. Part of the Microsoft .NET Platform, it provides the easiest and most scalable way to develop, deploy and run distributed web applications that can target any browser or any application.' C y chang nh vy hay khng? hay l ch qung co theo kiu ... 'cao n hn tn' m thi? Chng ta hy ... 'ngi xung y, hy ngi xung y' v ngi gn li vi nhau nhn cho r nhng c tnh khng ... tm thng ca ASP.NET nh sau:

Developer Productivity
Easy Programming Model: ASP.NET gip ta pht trin v trin khai cc ng dng v mng trong mt thi gian k lc v n cung cp cho ta mt kiu mu lp trnh d dng v gn gng nht. Ngoi ra cn bnh hn na, cc trang ASP.NET lm vic vi mi browsers hin nay nh Internet Explorer (IE), Netscape, Opera, AOL, ... m khng cn phi i ti i lui cc ngun m rt vt v nh trc. Flexible Language Options: Khng nh ASP kiu c in ch gii hn vi VBScripts and JScripts, ASP.NET ym tr trn 25 .NET ngn ng lp trnh (d nhin ngoi cc ngn ng mi thit lp ci sn ym tr .NET framework nh l VB.NET, C# v JScript.NET cn c MC++.NET, Smalltalk.NET, COBOL.NET, Eiffel.NET, Perl.NET, Component Pascal.NET, Mercury.NET, Oberon.NET, Python.NET, vn vn v vn vn ... khng k xit). Great Tool Support: Mc d ta c th ch cn dng ti Notepad trin khai cc trang ASP.NET nhng Visual Studio.NET gip nng sut trin khai mng thm phn hiu qu v ta c th quan st cc k hoch ca ta d dng hn khi pht ha (design) cc thnh phn ca ASP.NET bng hnh nh vi ASP.NET Web Forms hay Services theo phng php 'drag-drop-doubleclick' quen thuc ca nn Windows. Thm na, li cn ym tr ta trong vic pht hin v loi b nhng li sai mt cch rt thun li trong khi pht trin cc ng dng v mng (support for debugging and deploying ASP.NET Web applications). y l trang u tin khi dng Visual Studio.NET:

Rich Class Framework: Nh nn tng vng vng v ti nguyn phong ph ca .NET Framework vi hn 5000 classes bao gm th mi chuyn trn tri di t nh XML, data access, file upload, regular expressions, transactions, message queuing, SMTP mail, vn vn v vn vn ... nn vic thit k cc c tnh trong mt ng dng tr nn nh nhng v thoi mi hn xa rt nhiu.

Improved Performance and Scalability


Compile execution: ASP.NET khng nhng chy nhanh hn ASP c in gp 5 ln m cn c th duy tr kiu mu cp nht gi l kiu mu 'just hit save', ngha l ASP.NET t ng d tm mi s thay i v compile files khi cn thit cng nh lu tr kt qu compile cung ng dch v cho nhng yu cu tip theo sau, nh vy ng dng ca bn lun lun cp nht ha v chy nhanh hn c ... nga Nhm Ng 2002. Rich output caching: ASP.NET c kh nng lu tr mt kt qu chung trong phn b memory ca trang gi gii p cho cng mt yu cu t nhiu khch hng khc nhau v nh khng nhng tit kim c s lp i lp li cng tc thi hnh ca mt trang web m cn gia tng hiu xut mt cch ngon mc do gii hn ti a vic cht vn cc c s d liu (eliminating the need to query the database on every request) rt tn nhiu thi gian. .NET Outperforms J2EE: Trong vic i u vi nhau v hiu xut (performance) v scalability vi cng mt ng dng pht trin gia Sun's Java Pet Store J2EE v ASP.NET th ASP.NET khng nhng nhanh vt tri hn J2EE n 28 ln (khong 2700%), ngun m li t hn nhiu (khong 1/4 ngun m ca J2EE) m cn dng b x l (processor) ch khong 1/6 ln so vi vic s dng processor ca J2EE. Nu mun tm hiu thm, bn c th truy tm d dng nhng trang so snh nh vy khi ni vo Internet 'search' v hiu xut ca c hai sn phm.

Enhanced Reliability
Memory Leak, DeadLock v Crash protection: ASP.NET cng c kh nng t ng d tm v phc hi (detects and recovers) nhng tr ngi nghim trng nh deadlocks hay b nh (memory) b r bo m ng dng ca bn lun lun sn sng khi dng m khng lm cn tr vic cung ng dch v cn thit thng l.

Easy Deployment
Simple application deployment: ASP.NET n gin ha vic trin khai ng dng mng, do bin vic trin khai ton b ng dng tr nn d dng v thun li hn hn trc kia v by gi ta ch cn sao (vi XCOPY) v lu tr Server ch khng cn phi chy chng trnh 'regsrv32' ng k bt c thnh phn no c, v thm na, khi cn lu tr nhng yu t ph cn thit cho vic thit lp hay b tr cc ng dng, ta ch cn lu gi n vo trong mt h s di dng XML l . Dynamic update of running application: ASP.NET cho php ta t ng cp nht ha (update) cc thnh phn compiled (compiled components) m khng cn phi khi ng li (re-start) cc Web Server. Easy Migration Path: Ta khng cn phi du nhp nhng ng dng c pht trin v trin khai bng ASP c in hin c ca bn vo ASP.NET v ASP.NET c th chy song song vi ... cu chin binh ASP cng mt Internet Information Server (IIS) trong nn Windows 2000 hay nn Windows XP. Cc ng dng c vn tip tc chy ht sc thoi mi vi ASP.DLL trong khi ASP.NET engine s x l cc ng dng mi. Ngoi ra, ASP.NET cn cho php bn dng li nhng thnh phn thng mi hin nay kiu COM c in trong cc ng dng ca n.

XML Web Services: Dch v tn k v mng vi XML cng cho php bn truyn t (communicate) v chia x (share) cc d kin (data) xuyn qua mng Internet d dng ti cc SOAP client m khng h phn bit i x cc h iu hnh hay cc ngn ng lp trnh khc nhau (regardless of OS or programming language). Nh , ta khng cn phi hc thm hay o su cc kin thc v Networking, XML hay SOAP, ... Mobile Web Service Support: Thm na, ASP.NET Mobile Controls cn gip ta pht trin v trin khai mng nhm vo th trng nhng cell phone hay PDA vi gn hn 80 Mobile Web Services uc cung cp trong .NET framework. Bn ch cn lp trnh cho ng dng ca bn nh thng l ri ph mc cho Mobile Controls t ng pht sinh ra nhng ngun m nh WAP/WML, HTML hay iMode thch hp vi tng loi thit b (device) ring bit.

Thi, n y ta tm ngng ... 'nh bng' nhng g sng chi m ht mt hi tht di, bc mt bc khi u cho cuc hnh trnh tm hiu v thc hnh v ASP.NET. Vy xin mi bn hy sang sng, khng, sang ... trang vi bi s 1 'Lm Quen vi ASP.NET'

Bi 01 Lm Quen vi ASP.NET
Hy ngi xung y, hy ngi xung y, xa cn bun phin. Du bit chia phi, nhng trong cuc i, vn c i ta. Hy ngi xung y - L Uyn Phng

Trong trang ny, ta s tham kho mt s vn nh sau:

ASP.NET l g? Phng php lm vic trong mng S lc v .NET Framework B tr v ci t ASP.NET To trang ASP.NET u tin

Chc hn ta c dp c nghe Nguyn Ngc Ngn k vi K Duyn rng ng b cng gn 2, 3 nm tri ng ng ... nghin cu rt l cc kh mi khm ph ra mt chn l nh sau: 'Th l ly v va tr va p cn hn l ly v ... va gi va xu'. Ta th khng cn phi tn nhiu nm thng n th bit c ASP.NET va tr va p hn l ASP hoc nhng phng php pht trin mng c in khc nhng d c bit r ASP.NET va tr va p (Microsoft chnh thc khai trng sn phm .NET Framework v MS Visual studio.NET vo ngy 13 thng Hai nm 2002, tuy nhin rt nhiu phin bn Beta2 c ph bin khp th gii gia nm 2001) nhng my ai bit c ASP.NET l g v dung nhan ... ma h ra lm sao? Vy ta 'hy ngi xung y' bt u lm quen vi ASP.NET.

ASP.NET - EM L AI?
Trc ht, h tn ca ASP.NET l Active Server Pages .NET (.NET y l .NET framework). Ni n gin, ngn v gn th ASP.NET l mt cng ngh c tnh cch mng dng pht trin cc ng dng v mng hin nay cng nh trong tng lai (ASP.NET is a revolutionary technology for developing web applications). Bn lu ch ASP.NET l mt phng php t chc hay khung t chc (framework) thit lp cc ng dng ht sc hng mnh cho mng da trn CLR (Common Language Runtime) ch khng phi l mt ngn ng lp trnh. Ngn ng lp trnh c dng din t ASP.NET trong kha ny l VB.NET (Visual Basic .NET) v VB.NET ch l mt trong 25 ngn ng .NET hin nay c dng pht trin cc trang ASP.NET m thi. Tuy mang h tn gn ging nh ASP c in nhng ASP.NET khng phi l ASP. Ta s lc y vi khc bit gia ASP.NET v ASP bn c khi nim tng qut v s trnh by thm chi tit khi o su vo tng im c trng (features) ca ASP.NET tng bi hc mt.

KHC BIT GIA ASP.NET V ASP


ASP.NET c phc tho (re-design) li t s khng, n c thay i tn gc r v pht trin (develop) ph hp vi yu cu hin nay cng nh vch mt hng i vng chc cho tng lai Tin Hc. L do chnh l Microsoft qu chn nn trong vic thm tht v kt hp cc cng dng mi vo cc kiu mu lp trnh hay thit k mng theo kiu c in nn Microsoft ngh rng tt nht l lm li mt kiu mu hon ton mi thay v v vu ch ny ch n vo ASP. l cha k n nhiu pht minh mi ra i sau ny da trn cc khi nim mi m theo xu hng pht trin hin nay ca cng ngh Tin Hc (Information Technology) cn c a vo kiu mu pht trin mi . Nh vy, ta mi c th ni ... khi khi ASP.NET khng phi l ASP. Tht vy , ASP.NET cung cp mt phng php hon ton khc bit vi phng php ca ASP. Lu , mc d ASP.NET v ASP khc bit nhau nhng chng c th hot ng vui v hi ho vi nhau trong Web Server ca bn (operate side-by-side). Do , khi bn ci ASP.NET engine, bn khng cn lp trnh li cc ng dng hin c di dng ASP ca bn tuy rng, nu mun, bn c th lm iu rt d dng.

S THAY I C BN
ASP v ang thi hnh s mng c giao cho n pht trin mng mt cch tt p nh vy th ti sao ta cn phi i mi hon ton? L do n gin l ASP khng cn p ng nhu cu hin nay trong lnh vc pht trin mng ca cng ngh Tin Hc. ASP

c thit k ring bit v nm tng phi trn h iu hnh Windows v Internet Information Server, do cc cng dng ca n ht sc ri rt v gii hn. Trong khi , ASP.NET l mt c cu trong cc c cu ca h iu hnh Windows di dng nn hay khung .NET (.NET framework), nh vy ASP.NET khng nhng c th dng cc object ca cc ng dng c m cn c th x dng tt c mi ti nguyn m Windows c, d dng nh ... n cm tm b sn ch vy. Ta c th tm tc i khi s thay i nh sau: Tp tin ca ASP.NET (ASP.NET file) c extension l .ASPX, cn tp tin ca ASP l .ASP. Tp tin ca ASP.NET (ASP.NET file) c phn tch ng php (parsed) bi XSPISAPI.DLL, cn tp tin ca ASP c phn tch bi ASP.DLL. ASP.NET l kiu mu lp trnh pht ng bng s kin (event driven), cn cc trang ASP c thi hnh theo th t tun t t trn xung di. ASP.NET x dng trnh bin dch (compiled code) nn rt nhanh, cn ASP dng trnh thng dch (interpreted code) do hiu sut v tc pht trin cng thua st hn. ASP.NET ym tr gn 25 ngn ng lp trnh mi vi .NET v chy trong mi trng bin dch (compiled environment), cn ASP ch chp nhn VBScript v JavaScript nn ASP ch l mt scripted language trong mi trng thng dch(in the interpreter environment). Khng nhng vy, ASP.NET cn kt hp nhun nhuyn vi XML (Extensible Markup Language) chuyn vn cc thng tin (information) qua mng. ASP.NET ym tr tt c cc browser v quan trng hn na l ym tr cc thit b lu ng (mobile devices). Chnh cc thit b lu ng, m mi ngy cng ph bin, khin vic dng ASP trong vic pht trin mng nhm vn ti th trng mi tr nn v cng kh khn.

PHNG PHP LM VIC TRONG MNG


Internet v ang em li nhiu iu k diu cho i sng ca ta. Tht vy, n c kh nng 'ni vng tay ln' mi ngi trn th gii tng chng nh cch bit xa xi ngn dm bng dng li gn trong gang tt, k thut ny mang li bit bao nhiu iu mi m n cho ta t nh e-mail, instant messaging hay World Wide Web (hay gi tc l WWW hay Web hay mng) lm vic thng tin lin lc tr nn d dng, do con ngi cng i sng cng thay i nhanh chng nh ...'cun theo chiu gi'. T khi u, vic pht trin 1 mng ht sc l n gin, ch cn mt hay vi trang trong ta mun chia s bt c thng tin g ta thch l chc chn cng c ngi gh qua thm ving. Tuy vy, cc trang trong thi k khi nguyn ca mng rt th ng, n khng cho php khch vng lai trao i thng tin mt cch h tng (interact) vi ta, ngha l thm th c thm nhng khng hi hay chia s c g vi nhau. Dn d, mng pht trin thm nhiu cng dng khc nhau gn thm vo no l hnh nh, no l tables, forms v cui cng c th trao i thng tin hay tm tnh vi khch vng lai qua cc ng dng nh guestbook, thm d kin (user, customer hoc l client poll) hay cc din n vi mi tit mc trn tri di t. Sau , cc chuyn gia pht trin mng li thm tht v trang im cho mng ca mnh cng lc cng c sc hn, cng mun mu mun v. Tt c nhng c gng em tc ng h tng n gia Web Master (hay nhm qun l mng) v khch vng lai nh ta c chng kin hin nay, tuy vy vn cn thiu hn 1 phn quan trng nht l phn ni dung c ng tu bin (dynamic content). Do vai tr ca phng php dch v (server processing) c pht trin c th trnh by ni dung c lu tr trong cc c s d liu (database) tu theo yu cu ring bit cho tng c nhn.

KIU MU RESQUEST/RESPONSE
Kiu mu ny chnh l ton b phng php lm vic theo kiu Client /Server hin dng vi ASP. Client/Server - Mt trng hp n gin nht l s trao i thng tin gia 2 my vi tnh hon thnh 1 cng vic c nh trc, trong my Server cung cp dch v theo yu cu ca 1 my khch hnh (Client PC).
Thng thng, Server l my vi tnh lu tr thng tin v mng trong c hnh nh, video, nhng trang HTML hay ASP. Client l my vi tnh c dng lt mng. Mt cch tng qut phng php ny gm c 4 bc c bn sau: 1. 2. Client (thng qua Internet Browser) xc nh v tr ca Web Server qua 1 ni URL (Universal Resource Locator) t nh www.vovisoft.com Client s yu cu c tham kho 1 trang trong mng v thng l trang ch (home page) t nh index.htm hay default.htm

3. 4.

Server p ng bng cch hon tr h s m Client yu cu. Client nhn c h s gi v v hin th (display) trong browser ca mnh.

Lu , mt khi Client nhn c h s ri, qu trnh trao i qua li kt thc ngay tc khc. Sau , Server v Client tr thnh ... 'ngi xa l', coi nh l cha tng bao gi gp nhau (stateless model), ta gi l kiu ... 'lm ng'.

KIU MU EVENT-DRIVEN
Kiu mu event-driven ny dng vi ASP.NET cng tng t nh l kiu mu event-driven m ta vn thng dng trong khi lp trnh cc ng dng vi Visual Basic 6. Trong kiu mu ny, Server s khng 'ngi ... chi xi nc' ch Client yu cu tham kho 1 trang no trong mng m Server b tr v k hoch sn trc tt c mi tnh hung c th hnh ng kp thi mi khi Client quyt nh lm 1 iu g . Ta gi l 'response to your action', cn trong kiu mu trc l 'response to your request', nh vy ASP.NET c th pht hin ra cc hnh ng ca Client phn ng cho thch hp. c ti y chc bn s hi li ngay rng: 'a, nhng m lm sao mt Server no , c th tn u u bn kia a cu, li bit c l ta ang g vi mu t trong mt hp ch hay l ang nhp mi chut (click) vo button trong phn Guestbook hay Forum ca Vovisoft gi i mt thng ip lm quen vi Vovisoft?'. , s d Server c th lm c 'chuyn ... kh tin nhng c thit ' l da vo tin trnh x l linh ng Client (gi l clever client-side processing) thc hin kiu mu event-driven ny ca mnh. Tin trnh x l Client xy ra khi ta b tr ngun m thch hp m Client c th hiu c trong cc trang ta gi v cho Client. Lu l mc d cc trang mng (web page) ta u cha Server nhng ngun m li c th c thc hin v x l, hoc Server hoc Client (Server-Side processing v Client-Side processing) tu theo cch ta b tr. Tht vy, ASP.NET khng th no bit c chuyn g s xy ra my vi tnh ca bn (Client PC) nhng nh vo tin trnh x l linh ng Client m Server c th tin hnh kiu mu pht trin mng mi theo phng php event-driven. Nh l ta c th chy ngun m 2 ch khc nhau: hoc l chy Server (gi l Server-side) hoc l chy Client (Clientside) v cc ngun m 2 ch ny hon ton khc bit, khng c tc ng h tng vi nhau (no interact with each other). iu c ngha l my Client s chu trch nhim thi hnh cc ngun m c lp trnh dnh cho mnh cng nh my Server ch chy cc ngun m dnh cho Server. Thng tin hay ni dung cn thit Server s c chuyn sang dng HTML n gin (plain HTML) trc khi gi n cho Client, thng th ngun m dnh cho Client cng c chuyn i di dng 'plain text command' thc hin cc hiu ng nng ng (dynamic effect) my Client, t nh thay i hnh nh (image rollover) hay hin th mt thng ip (message box). ASP.NET s dng cc ngn ng mi c trnh bin dch (compiled languages) nh C# hay VB.NET son cc ngun m trong cc trang Web Server.

S LC V .NET FRAMEWORK
Mi chc nng ASP.NET c c hon ton da vo .NET framework, do c ch .NET trong ASP.NET. Ta cn phi hiu thu o kin trc h tng ca .NET framework dng ASP.NET mt cch hiu qu, trong quan trng nht l CLR v .NET Framework Class.

CLR (COMMON LANGUAGE RUNTIME)


CLR l mi trng c dng qun l s thi hnh cc ngun m (manage the execution of code) m ta son ra v bin dch (write and compile code) trong cc ng dng. Tuy nhin khi bin dch ngun m, ta li bin dch chng ra thnh mt ngn ng trung gian gi l Microsoft Intermediate Language (MSIL). Chnh MSIL trung gian ny l ngn ng chung cho tt c cc ngn ng .NET hin c, do chc bn cng on ra l ASP.NET cng c bin dch (compile) ra MSIL nh mi ai khc. Trong khi bin dch nh vy, cc ng dng cng sn xut ra nhng thng tin cn thit t ... qung co chnh mnh, ta gi nhng thng tin ny l metadata. n khi ta chy mt ng dng, CLR s tip qun (take-over) v li bin dch (compile) ngun m mt ln na ra thnh ngn ng gc (native language) ca my vi tnh trc khi thi hnh nhng cng tc c b tr trong ngun m . Ta c th cm thy nhng vic bn rn sau hu trng khi phi ch i 1 khong thi gian cn thit CLR chm dt nhim v ca n khi ln u phi bin dch (compile) v hin th 1 trang Web, nhng ri mi chuyn s xui cho mt mi, cui cng l ta c mt trnh bin dch (compiled code) x dng rt hiu qu.

.NET FRAMEWORK CLASSES

iu quan trng nht m ta cn phi nh l mi th trong .NET u l object, t nh cc trang ASP.NET, cc hp thng ip (message box) hay l nt bm (button), tt c u l object c. Cc object c t chc li thnh tng nhm ring bit nh trong mt th vin ta d dng x dng. Ta gi cc nhm nh vy l namespaces, v ta s dng nhng namespace ny gi hay nhp (import) cc class cn thit cho ng dng ca mnh. y, ta ch s lc mt cht v .NET framework m thi, bn c th tham kho y chi tit v .NET framework cc bi vit ca thy L c Hng trong kha Hc .NET Framework v VB.NET

CI T ASP.NET
chy trang ASP.NET, trc ht ta cn phi ci t thnh cng:

Internet Information Server (IIS) v b tr Virtual Directory dng trong kha T Hc ASP.NET ca Vovisoft. MS Visual Studio.NET - trong trng hp ny th MS Visual Studio.NET ci sn .NET Framework SDK cho ta dng vi ASP.NET hoc l Microsoft ASP.NET Web Matrix (chi tit c trnh by bi Gii Thiu V Web Matrix). .NET Framework Software Development Kit (SDK) - nu ta khng c MS Visual Studio.NET, ta c th ti .NET Framework Software Development Kit (SDK) xung t do t mng www.microsoft.com/NET , vi SDK, ta ch c th dng Notepad hoc mt Text Editor no ta thch pht trin trang ASP.NET m thi.

Nh l ASP.NET l k thut pht trin mng phi Server, do ta phi cn c Internet Information Server (hay thng c gi n gin hn l Web Server) son (pht trin hay lp trnh) cc trang v mng cho khch vng lai gh thm cng nh tham kho cc thng tin lin h. Nhng khc vi cc trang ASP c in, Web Server s khng hiu cc trang ASP.NET nu nh ta qun hay b st khng ci .NET Framework SDK hoc khng ci MS Visual Studio.NET, chnh nh .NET Framework SDK m ta c y cc cng dng v cc object hay classes cn thit cho cc trang ASP.NET ca ta.

CI INTERNET INFORMATION SERVER (IIS)


Internet Information Server (IIS) Version 5.0 l mt sn phm 'cho khng ... biu khng' ca Microsoft khi ta mua MS Windows 2000 Professional hay MS Windows XP Professional. IIS chuyn tr v Web Server, qua ta c th cung cp cc dch v ni chung v mng cho khch vng lai, m dch v v mng th thin hnh vn trng, nh xu nh t cy kim si ch cho n v i nh phi thuyn, gii Ngn H hay v tr, u c th c b tr y thng tin hay cc ng dng lin h cn thit p ng nhu cu ca khch vng lai. 1. ci IIS Version 5.0 trong MS Windows XP Professional, ta bt u chn:

Start, Settings, Control Panel, Add/Remove Programs v nhp n (click) Add/Remove Windows Components, xong chn Internet Information Server nh sau:

2. Nu ta nhp n nt <Details>, ta c th t do la chn thm hay bt cc thnh phn trong IIS, t nh ta c th b tr thm File Transfer Protocol Service (FTP Server) qun l mt cch hiu qu hn vic ti ln (upload) hay ti xung (download) cc h s (documents) hay tp tin (files).

3. Nhp nt <Next>, Windows XP Professional s thu thp cc thng tin lin h v bt u tin trnh ci t IIS. Ch trong vng vi pht l ta c mt Web Server ngon lnh trong my vi tnh. Gi y, bn tr thnh mt Web Master ... 'bt c d'. Xin chc mng tn Web Master, t ra ta cng tr thnh Web Master chnh my vi tnh ca ta (Web Master ca local host). 4. xc nh vic ci thnh cng Web Server, ta c th th nh sau:

M Browser ca bn, t nh Microsoft Internet Explorer v g hng ch nh sau vo hp a ch (Uniform Resource Locator) http://localhost hay http://cantho cantho (Cn Th) trong trng hp ny chnh l tn my vi tnh ca ti (Computer Name). Ta c th gi localhost hay cantho tu .

Sau khi ta nhp nt <Enter>, trang mc nh (default page) ca IIS s hin th nh sau:

B TR VIRTUAL DIRECTORY DNG TRONG KHA T HC ASP.NET CA VOVISOFT


Trc khi ta c th to ra v b tr mt virtual directory tn l VovisoftASPNET (hoc bt c tn no bn thch) dng trong kha T Hc ASP.NET ny, ta phi lm mt s vic nh sau:

To ra 1 sub folder Vovisoft ASPNET cho cc bi tp (Exercises). Vo (access) bn trong Web Server kim tra hay qun l cc ti nguyn trong mng. B tr virtual directory VovisoftASPNET.

Chi tit cc bc theo th t nh sau:

1. To ra mt sub directory c tn l Vovisoft ASPNET cu trc drive D nh sau: D:\Net\Vovisoft ASPNET, l c mt ch trng gia 2 ch Vovisoft v ASPNET. Tuy vy, nu bn nhuyn v IIS, bn c th t tn ty thch v khng nht thit phi theo y chang kiu mu ny, nhng bn phi hiu vic bn lm b tr mt virtual directory thch hp dng thc hnh cc bi tp trong kha sao cho thnh cng.

2. C nhiu phng php vo (access) bn trong Web Server trc khi b tr virtual directory, ta c th dng MMC (Microsoft Management Console) cng thm IIS snap-in vo console hoc ta c th chy IIS bng cch chn: Start, Programs, Administartive Tools, Internet Information Service. Phng php dng MMC l phng php c cc MCP (Microsoft Certified Professional) hay MCSE (Microsoft Certified System Engineer) a thch hn v tnh cch linh ng mm do thch hp cho vic qun l cc ngun ti nguyn khc nhau trong mng. Di y l hnh c trng cho vic dng MMC:

Tuy nhin, ta s khng o su vo chi tit vic x dng MMC b tr virtual directory cho kha hc y m ta s dng kiu vo IIS trc tip qua vic chn: Start, Programs, Administrative Tools, Internet Information Service nh trnh by trn. IIS s hin th nh sau:

3. B tr mt virtual directory VovisoftASPNET:

Nhp phi (right click) vo Default Web Site, chn New, Virtual Directory:

Virtual Directory Creation Wizard s bt u tin trnh b tr:

Nhp vo nt <Next> v g VovisoftASPNET hp Alias:

Nhp vo nt <Next> v dng <Browse...> chn sub folder 'D:\Net\Vovisoft ASPNET' m ta chun b trc y cho cc bi tp ca kha.

Chp nhn cc b tr mc nh (default settings) cho virtual directory VovisoftASPNET. Nu thch, ta c th thm vo quyn Browse (mc ch l sau ny ta d truy cp v chy cc trang ASP.NET pht trin cho ng dng ca mnh). Nhp <Next> v sau <Finish> kt thc tin trnh b tr.

Th l ta c mt virtual directory chy cc trang ASP.NET sau ny. Bn thy ! Vic to ra 1 virtual direcotry cn d dng hn l n ... 't ti nm'.

CI MS VISUAL STUDIO.NET
Xin tham kho bi hc s 1 ca thy L c Hng kha Hc Microsoft .NET Framework v vic lm sao ci t MS Visual Studio.NET thnh cng. Lu : Khi ci MS Visual Studio.NET l ta cng ci .NET Framework SDK, do ta khng cn phi theo nhng ch dn v vic ci t .NET Framework SDK nh trnh by bc k tip.

CI .NET FRAMEWORK SOFTWARE DEVELOPMENT KIT (SDK)


Tuy ta c th ti xung min ph .NET Framework SDK mng www.microsoft.com/NET nhng lu l SDK ny gm tng cng gn hn 130 MBytes nn ta s mt rt nhiu thi gian (khong 6, 7 gi) ti thnh cng trong trng hp dng 56 Kbps modem. Ngoi ra, thay v ti qua mng, ta cng c th t mua SDK cha trong CD-ROM hay truy cp SDK trong cc CD-ROM biu km vi cc tp ch Tin Hc. Mt khi c .NET Framework SDK ri, ta ch cn chy chng trnh setup l xong. Tin trnh ny cng s rt lu v Windows s khai m tng tp tin mt cng nh thu thp cc thng tin cn thit cho vic b tr .NET Framework my ca ta, do tt hn ht

l ta ... t t t pha cho mnh mt ly c ph ... ri va nhm nhi va thng thc bi hc s 1 ca thy L c Hng nh nu trong phn 'Ci MS Vusial Studio.NET' tm hiu thm v .NET Framework.

TO TRANG ASP.NET U TIN


Mc du trang ASP.NET thun ty ch cha ng ch v ... ch (pure text) nh trang v HTML nhng u ai cm ta dng MS Visual Studio.NET son cc trang ASP.NET v qua x dng giao din bng hnh (Graphic User Interface - GUI) vic b tr hay pht trin thm phn d dng v linh ng. Lu l phn ni thm (extension) trang ASP.NET s mang tn .aspx phn bit vi .asp trong ASP c in. Ta s to trang ASP.NET u tin bng 2 phng php nh sau:

Dng MS Visual Studio.NET to trang ASP.NET u tin. Dng Notepad to trang ASP.NET u tin.

Bi tp 1: Dng MS Visual Studio.NET to trang ASP.NET u tin. Mc ch: Hin th hng ch "Welcome to Kha T Hc ASP.NET" trong trang ASP.NET u tin cho mng cc bn n vi kha hc ny ca Vovisoft. Cc bc th t nh sau: 1. Chy MS Visual Studio.NET v chn d n mi (New Project) nh sau: Project Types: Templates: Name: Location: Visual Basic Projects ASP.NET Web Application vs-welcome http://cantho/DevASPNET/Bai01/

Ta nn nh kim tra hng ch pha di hp Location coi li xem d n c to ra ng ch m ta mun cha hay l khng? Chnh hng ny cng l URL (Uniform Resource Locator) ta cn phi in vo hp a ch (Address) trong Internet Explorer hin th trang ASP.NET vi phn ni thm (extension) l .aspx

MS VS.NET s to cc sub-folders nh sau: DevASPNET\Bai01\vs-welcome bn di Default Web Sit, trong trng hp ny Default Web Site chnh l C:\Inetpub\wwwroot. Nu dng IIS kim tra c tnh ca DevASPNET, ta thy Local Path l DevASPNET.

Bn c th chn Location no ty theo s t chc lu tr cc d n ca bn, nhng nh ng trng vi tn ca cc Virtual Directory c sn. T nh ta to trc 1 virtual directory tn l VovisoftASPNET, sau dng MS VS.NET to 1 ASP.NET Web Application Location http://cantho/VovisoftASPNET/Bai01/vs-welcome, ta s gp li sau y khi Web Server khng cho php ta 'overwrite' virtual directory :

Lu : Nh trnh by, chng ta s khng o su chi tit v cch x dng MS VS.NET y, xin tham kho cc bi Hc .NET Framework do thy L c Hng son. 2. Nhp vo nt <OK> MS VS.NET to ra 1 d n mi. Nu , ta s thy mt trang ASP.NET c to ra mt cch mc nh (default) vi tn l WebForm1.aspx nm trong Solution Explorer Windows v m tay phi, bn tri ta c 1 hp dng c (Toolbox) v gia l View Designer.

3. M hp dng c (Toolbox) v nhp i vo cng c Label, mt cch thng dng khc l ta c th ko l (drag) cng c Label vo trong View Designer.

4. B tr cc c tnh ca cng c Label nh sau:

Lu y l ta s dng ng dng VPSKEY Version 4.0 (or up) vi bng m Unicode g ting Vit cho c tnh Text ca Label tn lblWelcome nh hnh trn. Ta c th dng bt c ng dng g ting Vit no cho php encoding vi Unicode, nu dng VPSKeys Version 4.0 th bn cn phi b tr nh sau:

5. Chn File, Save WebForm1.aspx As lu tr vo a cng, nh chn Save with Encoding (hay ta c th dng Advanced Save Options) vi Encoding l Unicode (UTF-8 with signature) - Codepage 65001 lu tr (save) ting Vit chnh xc.

6. Cui cng ta s dng IE Client Browser hin th trang WebForm1.aspx (nu ta khng i tn, trang mc nh l trang WebForm1.aspx khi dng MS VS.NET to 1 ASP.NET Web Application). Trong hp a ch (Address), lu l:

http://cantho/DevASPNET/Bai01/vs-welcome c MS VS.NET to ra trong Server cantho (hay co th dng localhost) webform1.aspx l trang web m ta va pht trin

Bi tp 2: Dng Notepad to trang ASP.NET u tin. Mc ch: bi tp 2, ta cng hin th hng ch "Welcome to Kha T Hc ASP.NET" trong trang ASP.NET cho mng cc bn n vi kha hc ny ca Vovisoft. Tuy nhin, bi tp ny, ta ch dng Notepad to ra 1 trang ASP.NET y chang nh trang trn.

1. Chy ng dng Notepad v g nhng hng ch lp trnh y chang nh trong hnh di y. Trong bi hc 1, ta tm thi chp nhn cc mnh lnh v c php trong trang ASP.NET u tin ny v s tham kho chi tit cng nh phn tch v gii thch v phng php xy dng trang ASP.NET bi hc k tip. Nh khi g ting Vit ta s dng VPSKeys Version 4.0 nh trong bi tp 1.

2. t tn tp tin (file) ny l np-welcome.aspx v lu tr (save as) vi encoding UTF-8 (UTF-8 l ch vit tc ca Universal Transform Format-8) di subdirectory D:\Net\Vovisoft ASPNET\Bai01\np-welcome\ Khi lu tr np-welcome.apsx di 1 subdirectory nh trn, ta c tnh mun dng virtual directory VovisoftASPNET to ra trong IIS hin th trang web ny.

3. Hin th trang ASP.NET u tin ny vi IE Client Browser v g hng ch di y vo hp a ch (Address): http://cantho/VovisoftASPNET/Bai01/np-welcome/np-welcome.aspx ri nhp vo nt <Enter>. Ta s c 1 trang ASP.NET vi hng ch Welcome to Kha T Hc ASP.NET - Vovisoft nh sau:

Tm tt
Trong bi hc ny, ta tht s lm quen vi ASP.NET qua vic tm hiu cc phng php lm vic ca mng trong phm vi ASP.NET. Thm na, ta cng bit s lc v s thay i c bn trong vic pht trin mng do nh c .NET Framework v bt tay vo vic ci t ASP.NET thc hin c trang ASP.NET u tin. Tht vy, qua 2 bi tp, ta x dng thnh cng 2 phng php vi 2 ng dng khc nhau to ra trang Web 'Cho Mng Bn n Vi Kha T Hc ASP.NET ca Vovisoft', v nh ta thy, mi cch u c ci hay ring, thch dng cch ny hay cch kia ty thuc vo thi quen, s thch cng nh mi trng lm vic hay hot ng xung quanh. Cn 1 phng php na m ti rt thch v tnh cch cng ng ca n l MS ASP.NET Web Matrix. Phng php ny s trnh by bi s 3. Trong Bi s 2 'Xy Dng Trang ASP.NET', ta s tham kho chi tit vic xy dng mt trang ASP.NET nh th no cng nh o su v vic phn tch c php v cc mnh lnh (commands hoc keywords) dng trong cc trang ASP.NET

Download Source Code


Ngun m bi tp 1 Ngun m bi tp 2

Bi lm nh
Cu Hi 1: CLR l g? Cu Hi 2: Virtual Directory l g? V lm sao b tr thnh cng Virtual Directory? Bi Lm 1: Pht trin 1 trang ASP.NET dng MS Visual Studio.NET hay Notepad hin th (display) 1 bi th hoc cc cu Ca Dao (bng ting Vit) m bn su tm.

Bi 02 Xy Dng Trang ASP.NET


V y nghe em V y, mc o the, i guc mc - K chuyn tnh - bng li ca dao K chuyn tnh - bng ni ng khoai - K chuyn tnh - bng ht la mi V v y, nghe gi ting xa - nh trong ting v b. (V y Nghe Em - Th A Khu - Nhc Trn Quang Lc)

Trong Bi 'Lm Quen Vi ASP.NET', ta nhn thc c ASP.NET gii thiu mt phng php mi v lp trnh pht trin trang web theo kiu mu event-driven ging nh dng ngn ng lp trnh Visual Basic. Nhng ai tng lm quen v ch lp trnh vi ngn ng script (script language) t nh VBScript hay JavaScript s b ng i cht v m trong cc trang ASP.NET khng cn trn ln vi HTML na, nhm mc ch cung cp kiu pht trin mi n gin hn, cp tin hn v cu trc cht ch hn (more advantages and more structure code). Hm nay, ta li 'v y' trong bi tham kho v phng php xy dng trang ASP.NET (hay gi l Web Form) v mt s vn lin h nh sau: Phn tch m trang ASP.NET u tin Xy dng mt trang ASP.NET n gin Vi nhn xt khi dng ASP.NET v HTML

PHN TCH M TRANG ASP.NET U TIN


Ta th xem li ngun m Bi tp 2 ca trang ASP.NET u tin trong Bi 01 'Lm Quen Vi ASP.NET':

<%@ Page Language="VB" %> <script runat="server"> sub Page_Load(obj as object, e as eventargs) lblWelcome.Text = "Welcome to Kha T Hc ASP.NET - Vovisoft" end sub </script> <html> <body> <asp:Label id="lblWelcome" runat="server"/> </body> </html> Ta nhn thy m ca trang ny c chia ra lm 3 phn rinng bit: Phn 1: <%@ Page Language="VB" %> c gi l Page Directives: phn ny cung cp cho ASP.NET nhng thng tin c bit ASP.NET bit cch m i x cng nh nhng thng tin dng trong tin trnh bin dch (during the compiling process), trong , ta mun ASP.NET dng VB.NET lm ngn ng lp trnh mc nh (default programming language) cho trang web, cc ti sau, ta s tham kho thm v import directive. Phn 2: <script runat="server"> ... </script> : phn ny cn gi l Code Declaration Block ging nh m Client Side nhng khc mt cht l c km theo runat="server" ch th cho ASP.NET bit thi hnh trang ny Server Side, phn ny cng l t ta ... 'dng v', kim sot mi cng dng cn thit v m c bin dch (compiled) thnh MSIL. Tht ra, ta c th t phn ny bt c ni no trong trang web nhng nu sp xp phn u tin ca trang cng l mt thi quen tt phn bit m ca ASP.NET vi m ca HTML. sub Page_Load(obj as object, e as eventargs) lblWelcome.Text = "Welcome to Kha T Hc ASP.NET - Vovisoft" end sub

Phn m ny to ra mt Procedure c tn l Page_Load mc nh (default) cho cc trang ASP.NET ging nh Form_Load trong vic lp trnh dng ngn ng Visual Basic vi s c (event) Load, khi trang u tin ny c a ra trnh by, ASP.NET s gn hng ch "Welcome to Kha T Hc ASP.NET - Vovisoft" vo hp ch c nhn hiu (label) lblWelcome. Phn 3: <html>... <html> : y l ni ta bt u phn m ca HTML. Phn ny chnh l hnh thc trnh by ni dung ca trang c ch bin bi m ASP.NET trc khi gi v v hin th trong browser ca Client. Ngoi ra, ASP.NET cng cho php ta km theo nhng ch th (instructions) trong Code Render Block bt u vi <% v chm dt vi %> t nh: <% Response.Wite ("My first page <P>") %> a ra nhng g ta mun lm vo bn trong lng ngun m ca phn HTML. Th d y, ta ch n gin hin th hng ch "My First Page" khi gi trang ny v browser ca Client.

Phn nh M v Ni Dung
Tin y, ta s tm hiu thm v s phn nh gia M (Code) v Ni Dung (Content) gi l Code and Content Separation. Nh ta bit, phn ng cc K S Tin Hc khi hnh thnh mt web site xy dng mi chuyn t A ti Z cho mng ca mnh k c vic hoch nh cc n thit k cng nh trang tr, sp xp v trnh by cc thng tin trong cc trang web. Tm li, cc K S Tin Hc khng nhng phi chun b v vit cc ngun m cn thit cho cc trang ca mnh m c th cn 'thu' hoc 'bao' lun cng vic ca mt Thit K Gia (Designer), mt Trang Tr Vin (Decorator), mt Kin Trc S (Architect), mt Ha S (Painter), mt Gio S (Instructor or Tutor), mt Web Master, mt Thng Tn Vin ... v rt nhiu vai tr khc khng th no k xit ty theo mc ch v tn ch ca web site. iu ny th ... cng tt thi, nhng ta thit ngh, khng phi K S Tin Hc no cng c trang b ... 'thp bt ban v ngh' nh vy v thng tnh, mt K S Tin Hc chuyn nghip li d (unskillful) v trang tr thit k, l do n gin l h tp trung kh nng, thi gian c c vo vic lp trnh v xem nh vic trang tr thit k cho web site ca mnh. Nht l trong phm vi cc i cng ty hay cc b s chnh ph, vic xy dng web site cha nhiu thng tin l vic ca mt nhm ch khng phi ca mt c nhn, mi ngi ph trch mt vic, t nh ngi lo v m (code), ngi lo v cch thc trnh by (with HTML, ...) do vic phn nh r rng gia m (code) v ni dung (content) tr nn rt cn thit trong vic pht trin cc trang web. ASP.NET gii quyt vn bng 2 hng nh sau:

Kiu mu Code Inline (Code Inline Model) Kiu mu Code Behind (Code Behind Model)

Code Inline Model: Trong kiu mu ny, m vn c vit v gi (code section) trong cc trang ASP.NET nhng khng trn ln vi HTML dnh cho phn ni dung (content section) nh m ta c thy trong bi tp 2 trong Bi 01 'Lm Quen Vi ASP.NET' vi 2 phn m v ni

dung nm ring bit nhau: <%-- This is the code section (ASP.NET Code) --%> <script runat="server"> sub Page_Load(obj as object, e as eventargs) lblWelcome.Text = "Welcome to Kha T Hc ASP.NET - Vovisoft" end sub </script> <%-- This is the content section (HTML Code) --%> <html> <body> <asp:Label id="lblWelcome" runat="server"/> </body> </html>
Code Behind Model: Mt kiu mu khc c p dng phn nh m v ni dung l phn m c sp xp trong mt tp tin khc ring bit mt ch lu tr khc hn ch cha cc trang ASP.NET, d nhin khi ta phn chia nh vy, ta phi sp xp li 2 tp tin ring bit c th lm vic vi nhau v c bin dch cng ging nh kiu mu Code Inline. Ta s i su vo chi tit kiu mu ny nhng bi k khi bn v cch 'Import' cc m t ngun ti nguyn bn ngoi.

Tin Trnh X L
By gi, ta s tm hiu v tin trnh x l trang web nh th no khi c khch vng lai ving thm (hoc lt mng) trang ASP.NET ca ta. Khi c ngi yu cu tham kho trang web ca ta, trc ht ASP.NET s bin dch (compile) m phn Code Decalration Block trong trang ASP.NET. Nu mt cht, ta nhn thy c mt s tr hon mc du nh nhng hay khng ng k trc khi browser hin th trang web , nhng nu cng chnh trang c ving thm ln th nh hoc nhng ln sau th s tr hon ta nhn thy trc kia s bin mt, l do l v trang c bin dch ri, ASP.NET ch c vic dng m thi ch khng cn phi bin dch ln na, do hiu sut gia tng ht sc ngon mc. Nh l m c ASP.NET bin dch thnh MSIL, CLR qun l v sau bin dch thnh ngn ng gc ca my (native machine language) trc khi trang c gi v browser ca Client. Ngun m (code) m ta lp trnh trong trang web c lu tr mt ni ring bit, CLR s thm chng lun lun, phng trng hp ta thay i ngun m th lp tc CLR s bin dch li 1 cch t ng trang web m khng cn ta phi lm g c. Sau khi trang web c bin dch, ASP.NET bt u tin trnh x l tt c ngun m k c cc s c (events) t nh ta g vi ch trong hp ch (text box) hoc nhp (click) mt nt no th b my ASP.NET (ASP.NET engine) s nghin cu, kho st bin c quyt nh cch phn ng v thi hnh p ng li bin c theo k hoch lp trnh quy nh trc. Tip theo, ASP.NET bin i tt c cc Server Controls trong trang web ra thnh nhng yu t HTML tng ng (HTML elements) t nh bin i <asp:Label> control ra thnh HTML <span> </span> hin th hng ch "Welcome to Kha T Hc ASP.NET - Vovisoft" nh th d ang phn tch trn (ta s thy HTML element ny khi quan st ngun m bng cch chn View, Source lc trang ASP.NET ca Bi 01 - Bi Tp 2) hin th trong Client Browser. ASP.NET cng nh gi nhng ngun m ca Code Render Block (nu c) v cng sn xut ra nhng yu t HTML tng ng. Cui cng, ASP.NET s gi kt qu chung cuc di dng HTML ti Client Browser, Client Browser ch nhn c trang web di dng ph hp vi tiu chun ca HTML, trong ASP.NET du bin i cc ngun m hoc cc control thuc phm vi Server (Server Side Code and Controls). Nh vy, ta c th dng bt c mt Web Browser no (khng nht thit l MSIE) cng c th hin th cc trang ASP.NET, tht vy i vi Client Browser th trang ASP.NET cng ch l mt trang HTML n gin nhng c phn ui ni thm (.aspx) hi l m thi. Lu , y l mt khi nim ht sc quan trng, ta cn hiu cho thu o, b qua c th s ... 'n nn hi hn sut i'. Browser chng qua ch l mt ng dng ht sc th ng (dump application) vi nhim v din dch cc yu t HTML m thi. ASP.NET nm vng iu , cho nn mi ln ASP.NET mun gi ti Brower nhng g, n u dch ra hay bin i ra dng HTML. Khng nhng vy, ASP.NET cn kho lo vn dng HTML ngy th (nhng d thng) cn thi hnh nhng tin trnh x l c bit (m ta s tham kho nhng bi hc k) cho ASP.NET pha Server m hon ton khng hay, khng bit g ht.

XY DNG MT TRANG ASP.NET N GIN


Bi Tp 1: Mc ch: Trong bi tp ny, ta s xy dng mt trang ASP.NET dng mt hp ch tip nhn tn ca khch vng lai v in ra (hay hin th) li cho ngi khch .
Cc bc th t nh sau: 1. Chy ng dng Notepad v g nhng hng ch lp trnh y chang nh m di y v lu tr (Save As) trong folder D:\Net\Vovisoft ASPNET\Bai02\baitap01\simple.aspx vi encoding UTF-8 (hay bt c u ty theo cch xp t Virual Directory m ta b tr vi IIS). Nu mun g ting Vit, ta dng VPSKeys Version 4.0 nh trnh by Bi Hc 01. Trong bi hc ny, ta tm thi chp nhn cc mnh lnh v c php trong trang ASP.NET v s tham kho chi tit cc Server Controls bi hc k.

<%@ Page Language="VB" %> <script runat="server"> Sub tbMessage_Change (Sender AS Object, E As EventArgs) lblmessage.Text = "Cho bn " + tbMessage.Text

End Sub </script>

<html> <body> <font size="5">Simple Application</font><hr><p> <form runat="server"> Please enter your name: <asp:textbox id="tbMessage" OnTextChanged="tbMessage_Change" runat=server/> <asp:button id="btSubmit" Text="Submit" runat=server/><p> <asp:label id="lblMessage" font-size="20pt" runat=server/> </form> </body> </html> 2. Hin th trang ASP.NET ny vi IE Client Browser v g hng ch di y vo hp a ch (Address): http://cantho/VovisoftASPNET/Bai02/baitap01/simple.aspx ri nhn nt <Enter>. Ta c th g tn ca mnh vo hp ch k bn hng danh hiu (label) "Please enter your name:" v nhp vo nt Submit, ta s c 1 trang ASP.NET cho mng khch vng lai nh sau:

Phn Ch Thch:

<%@ Page Language="VB" %> c dng ch th cho ASP.NET ta dng VB.NET lm ngn ng lp trnh mc nh. <script runat="server"> Sub tbMessage_Change (Sender AS Object, E As EventArgs) lblmessage.Text = "Cho bn " + tbMessage.Text End Sub </script> Khi s c tbMessage_Change khi ng, ta dng lblmessage.Text hin th hng ch "Cho bn " + tbMessage.Text trang ASP.NET.

<form runat="server"> Please enter your name: <asp:textbox id="tbMessage" OnTextChanged="tbMessage_Change" runat=server/> <asp:button id="btSubmit" Text="Submit" runat=server/><p> <asp:label id="lblMessage" font-size="20pt" runat=server/> </form> Phn HTML ny dng trnh by cc Server Controls trong trang ASP.NET theo th t t trn xung di, cc thay i khc (t nh thay i do vic khi ng 1 s c no ) s do phn Script chm nom v thi hnh. Mi Server Control u mang 1 ID quy c v duy nht, th d: <asp:textbox c ID duy nht l tbMessage trong quy c tb c ph bin v chp nhn ring bit cho cng c textbox, s c OnTextChanged c tn gi l 'tbMessage_Change' v Server Control ny <asp:textbox c thi hnh Server Side. Cc Server Control k gm c <asp:button (ID btSubmit) v <asp:label (ID lblMessage) dng cho nt bm (ta cng c th dng quy c btn hay bt cho nt bm) v nhn hiu vi quy c lbl.

Bi Tp 2: Mc ch: Trong bi tp ny, ta s xy dng mt trang kim tra vi php ton n gin t nh php cng, php tr, php nhn v php chia vi 2 con s nguyn. Ngi dng s g vo 2 con s nguyn v sau chn php tnh bng cch nhn nt bm c du +, -, * hay / hin th kt qu.
1. Chy ng dng Notepad v g nhng hng ch lp trnh y chang nh di y v lu tr (Save As) trong folder D:\Net\Vovisoft ASPNET\Bai02\baitap02\math.aspx vi encoding UTF-8: <HTML> <HEAD> <script language="VB" runat="server"> Sub btAdd_Click(Sender As Object, E As EventArgs) lblMessage.Text = "Addition Result: " & Cint(tbNumber1.Text) + Cint(tbNumber2.Text) End Sub Sub btSubtract_Click(Sender As Object, E As EventArgs) lblMessage.Text = "Substraction Result: " & Cint(tbNumber1.Text) - Cint(tbNumber2.Text) End Sub Sub btMultiply_Click(Sender As Object, E As EventArgs) lblMessage.Text = "Multiplication Result: " & Cint(tbNumber1.Text) * Cint(tbNumber2.Text) End Sub Sub btDivide_Click(Sender As Object, E As EventArgs) lblMessage.Text = "Division Result: " & Cint(tbNumber1.Text) / Cint(tbNumber2.Text) End Sub </script> </HEAD> <BODY> <font size="5">Simple Mathematics</font><hr><p> <form runat="server"> Number 1: <asp:textbox id="tbNumber1" runat=server/><br> Number 2: <asp:textbox id="tbNumber2" runat=server/><p> <asp:button id="btAdd" Text=" + " OnClick="btAdd_Click" runat=server/> <asp:button id="btSubtract" Text=" - " OnClick="btSubtract_Click" runat=server/>

<asp:button id="btMultiply" Text=" * " OnClick="btMultiply_Click" runat=server/> <asp:button id="btDivide" Text=" / " OnClick="btDivide_Click" runat=server/><p> <asp:label id="lblMessage" font-size="15pt" runat=server/> </form> </BODY> </HTML>

2. Hin th trang ASP.NET ny vi IE Client Browser v g hng ch di y vo hp a ch (Address): http://cantho/VovisoftASPNET/Bai02/baitap02/math.aspx ri nhn nt <Enter>. Trong trang kim tra ny, ta g s 100, 200 vo trong cc hp ch Number 1, Number 2 ri nhn nt bm + chng hn hin th hng ch 'Addition Result: 300'

Phn Ch Thch: <script language="VB" runat="server"> Sub btAdd_Click(Sender As Object, E As EventArgs) lblMessage.Text = "Addition Result: " & Cint(tbNumber1.Text) + Cint(tbNumber2.Text) End Sub ... ... </script> Phn script ny dng thi hnh cc php ton cng, tr, nhn v chia cc s nguyn ty theo s chn la ca user, trong nt c du (+) s khi ng s c btAdd_Click v subroutine btAdd_Click p ng bng cch cng 2 s nguyn c a vo 2 hp ch Number 1 v Number 2 vi nhau, sau lu tr kt qu lblMessage. Lu y, ta dng nhm t 'lu tr kt qu' ch khng 'hin th kt qu' phn script ny. Lu tr bng cch n nh lblMessage.Text bng "Addition Result: " v kt qu php cng, cn phn trnh by, ta ph mc cho m HTML. <BODY> <font size="5">Simple Mathematics</font><hr><p> <form runat="server"> Number 1: <asp:textbox id="tbNumber1" runat=server/><br> Number 2: <asp:textbox id="tbNumber2" runat=server/><p> <asp:button id="btAdd" Text=" + " OnClick="btAdd_Click" runat=server/> <asp:button id="btSubtract" Text=" - " OnClick="btSubtract_Click" runat=server/> <asp:button id="btMultiply" Text=" * " OnClick="btMultiply_Click" runat=server/> <asp:button id="btDivide" Text=" / " OnClick="btDivide_Click" runat=server/><p> <asp:label id="lblMessage" font-size="15pt" runat=server/> </form>

</BODY> Phn m HTML ny ch dng trnh by cc controls trong trang web m thi, y di hnh thc 1 form, ta b tr 2 textbox cho Number 1 v Number 2, 4 nt bm Cng, Tr, Nhn, Chia v 1 nhn hiu lblMessage hin th kt qu php ton n gin. Tt c u c thi hnh Server Side.

VI NHN XT KHI DNG ASP.NET V HTML


Code Declaration Blocks v Code Render Blocks
iu lm nht u cc chuyn gia mi lm quen vi lp trnh l khng bit dng ci no ... vo ci no v ... khi no. Khi tham kho 1 trang ASP c in, ta thy bi ri ngay v code nm ... 'lon x ngu', trn ln gia HTML code v VBSCript (hay JavaScript). ASP.NET n gin ho c iu ny. Nh trnh by u trang, ASP.NET cung cp 2 cch lp trnh khi dng chung vi HTML code. l Code Declaration Blocks v Code Render Blocks. Nh , ta c th nhn din ... 'c nhn' trong 1 trang ASP.NET d dng hn. Trong 2 cch , cch th nht Code Decalration Blocks c a chung hn v c th bin dch (compile) c thnh tng tp tin ring bit, loi b cch lp trnh kiu thp cm (spaghetti code) v do tr thnh phng php hu hiu nht phc tho (design) cc ng dng xy dng cc trang ASP.NET Cn ngoi ra, tt c u l HTML. Ngay c cc Server Controls cng c din dch nh l cc HTML code n gin khc. Tht vy, mc d cc Server Controls ny l nhng objects phi Server (server side) nhng giao din (interface) ca chng c HTML din t Client Browser nh HTML code. Ngay c cc event specifier cng l HTML (v event specifier, ta s tham kho chi tit trong cc bi hc sau ny). Ta cng c th dng ASP.NET object lp trnh thun tu HTML, t nh: <% Response.Write("Hello Vovisoft") %> theo kiu Code Render Blocks hin th hng ch "Hello Vovisoft". Nh vy th u c khc g kiu ASP c in v v hnh chung, lm vic bo tr trang ASP.NET tr nn phc tp.

Ch thch ngun m (Commenting code)


C 3 cch ch thch ngun m trang ASP.NET:

Cch dng vi <!-- v --> Cch dng vi ' Cch dng vi <%-- v --%>

Cch dng vi <!-- v -->


Cch ny ch c dng ch thch m HTML m thi.

Cch dng vi '


Trong tt c cc m ASP.NET, ta c th dng kiu ch thch tng ng vi ngn ng lp trnh, t nh C# dng 2 du slashes //, y, vi Visual Basic.NET, dng du mc n ' ch thch trong phn script nh sau: <script language="VB" runat="server"> Sub btAdd_Click(Sender As Object, E As EventArgs) ' Tnh ton v lu tr kt qu php cng lblMessage.Text = "Addition Result: " & Cint(tbNumber1.Text) + Cint(tbNumber2.Text) End Sub </script>

Cch dng vi <%-- v --%>


Ta c th dng <%-- v --%> bt c u nhng khng c dng trong Code Declaration Block ch thch. Tuy vy, cch ny tin ch c th ch thch nhiu hng mt lt, t nh:

<%-- This is the code section (ASP.NET Code) Phn ch thch ny c th vit thnh nhiu hng --%> <script runat="server"> sub Page_Load(obj as object, e as eventargs) lblWelcome.Text = "Welcome to Kha T Hc ASP.NET - Vovisoft" end sub </script>

Vit m thnh nhiu hng (Multiple Lines Code)


Vit m thnh nhiu hng vi HTML khng thnh vn , t nh: <B>Hello Vovisoft</B> tng ng vi: <B>Hello Vovisoft</B> Nhng vi ASP.NET v VB.NET th khng n gin nh th. Visual Basic.NET c son sn 1 ch (character) c bit dng trong trng hp ny l ch _ (underscore) ni ngun m vi nhau: <% Response.Write _ ("Hello Vovisoft") %> Lu ch _ (underscore) ny khng dng ni 2 hng ch ca 1 string vi nhau, t nh cch vit sau y khng ng c php lp trnh: <% Response.Write ("Hello _ Vovisoft") %>

Tm tc
Nh vy, ta tm hiu thm v cu trc v s lc qua c php cng nh vi mnh lnh, cng c (controls) c bn dng trong cc trang ASP.NET, iu ny s gip ta xy dng nn tng cho vic son tho cc trang ASP.NET phc tp hn trong tng lai. Ta s tip tc o su thm v ring bit v cch x dng cc server controls, user controls, kiu mu Event-Driven cng nh tc ng h tng (interact) gia ASP.NET v .NET framework. C 1 iu ta cn nhc nh, nu bn khng c cc nhu liu cn thit nh lit k trang Ro Trc ca kho T Hc ASP.NET t nh Visual Studio.NET, MS SQL2000 Server, ... th lm sao c th theo hc thnh cng kho ny, nht l ta li mun x dng cc giao din c bin son sn gip vic lp trnh thm thoi mi v ho hng. Do khng phi ai cng c phng tin hay ngn sch trang b cho mnh cc nhu liu nu trn nn vic t hc cng thm ... kh khn trm b. 'Ci kh ... n b ci khn' l vy. Nhng ... cc bn hy qung gch lo i, v 'may m c em, i cn ... d thng'. Em y l Web Matrix. Web Matrix c ci tn chnh thc l Microsoft ASP.NET Web Matrix Project. l 1 d n c xy dng v do nhiu K S Tin Hc thin nguyn (chuyn tr v .NET) ng gp. Ci ... nht l Web Matrix c cung cp min ph (free), do ta xi 1 cch thoi mi v hn na, Web Matrix rt nh (ch khong 1.2 MBytes - so vi MS Visual Studio.NET th ging nh con chut Mickey so vi con ... khng long) nhng rt p li uyn chuyn d dng nh MS Visual Studio.NET vy. Do , bi s 3 s 'Gii thiu v Web Matrix' , v s khc bit i vi MS Visual Studio.NET, v vic ci t v b tr cng nh cch x dng ca Web Matrix cho vic lp trnh cc trang ASP.NET

Download Source Code


Ngun m bi tp 1 Ngun m bi tp 2

Bi lm nh
Cu hi 1: Lm sao phn bit c gia Code Declaration Block v Code Render Block? Cu hi 2: Nh th no l Code Behind Model? Bi lm 1: Pht trin 1 trang ASP.NET dng hin th cun lch (Calendar). (Lu : phn gii p s c trnh by bi hc k).

Bi 03 Gii thiu v WEB MATRIX


Th tay m ngt cng ng Thng em t rut, gi ... ng l Ca Dao Vit Nam

Trong bi gii thiu v Web Matrix, ta s ln lt tm hiu: S lc v Web Matrix Khc bit gia Visual Studio.NET v Web Matrix Cc c im ca Web Matrix Ci t Web Matrix i do mt vng vi Web Matrix To trang ASP.NET vi Web Matrix

S LC V WEB MATRIX
Trc khi mang tn cng cm nh hin nay, Microsoft ASP.NET Web Matrix Project (gi tt l Web Matrix) khi u vi tn Web Studio, chuyn sang tn Mongoose, Project Saturn, Tahiti Project v cui cng l Microsoft ASP.NET Web Matrix. Tn Web Matrix c chn mang tnh cht sng to v thit lp c mi lin h trong cng ng cc Chuyn Gia hay K S Tin Hc v ASP.NET. D n c hnh thnh do s ng gp ca nhiu K S Tin Hc thin nguyn b rt nhiu thi gi ring t him hoi (thng l cc bui ti trong ngy v cui tun) mong to s hp tc chung cho cng ng ASP.NET ch khng chnh thc khi xng hay to nn t Microsoft. Bn c th tham kho chi tit v tin trnh hnh thnh Web Matrix cng nh danh tnh cc K S Tin Hc ng gp vo d n ny trong ni Web Matrix and Project Team. Web Matrix c phc tho cho cng ng ASP.NET nn ta dng min ph, Web Matrix li d xi v rt p. Tng cng cn ni qua, mt trong cc mc tiu c bn ca d n Web Matrix l to iu kin ng gp chung trong cng ng pht trin mng nn nhng ngi khi xng d n lun khuyn khch ta ti xung, ci t, x dng v gii thiu Web Matrix cng nh ng gp kin trn din n ca Web Matrix Web Matrix c hon chnh hn. Cc K S Tin Hc dng ngn ng lp trnh C# v .NET framework cu to ra Web Matrix. Khong chng 800 Classes v hn 150,000 m (lines of code) c dng trong d n ny vi bit bao cng sc v thi gi c u t vo khng th no k xit. Do , mc d Web Matrix rt nh ( dng ti xung ch c 1.2MB) nhng khng nhng Web Matrix l mi trng pht trin cc trang ASP.NET v mng mt cch n gin v hu hiu, m cn c dng to cc user controls, cc classes ( bin dch thnh assemblies), cc dch v v mng (Web Services) v ngay c HTML Handlers na. Ngoi ra, Web Matrix cn ym tr cu to cc trang HTML thun ty, cc style sheets, cc lc v ti liu XML (XML schemas and documents), cc SQL scripts cng nh vic nh hnh cc tp tin v .NET (.NET configuration files such web.config and global.asax).

KHC BIT GIA VISUAL STUDIO.NET V WEB MATRIX


Ta phi cng nhn MS Visual Studio.NET l mt cng c pht trin mng tuyt vi. MS Visual Studio.NET c thit k lm mi chuyn ... 'trn tri di t' v cho mi Chuyn Gia ch khng ring cho nhng ai chuyn tr pht trin mng. Tht vy, MS Visual Studio.NET c dng nh l mt cng c duy nht to ra cc ng dng v .NET, thit k cc dch v v mng (Web Services), phc tho v b tr cc trang ASP.NET cho mng v ngay c cc tp tin to hnh t nh cc icons hay cc bitmaps, ... nhng MS Visual Studio.NET qu ln, li ... khng 'r' v khng chuyn tr v ASP.NET nh cc K S Tin Hc trong nhm ASP.NET mong mun nn nhm ny mi hnh thnh cng c Web Matrix vi mc tiu r rt - r, p, bn v chnh thc ra mt cng chng ngy 17 thng 6 nm 2002 mc d vn cn di dng th nghim (Beta testing) vi tn Microsoft ASP.NET Web Martrix Project. Sau khi ci t, Web Matrix ch vn vn khong 2.5 MBytes. Bn c th ti Web Marix xung y. dng ti, Web Matrix ch c 1.2 MB va vn lu tr trong 1 da cng nh (floppy). D nhin, ta cn phi ci .NET Framework trc khi c th dng Web Matrix. Khi Web Matrix ra i, Notepad nh phi lui vo bng m, ng nhin khng ai cn mun nhn ti na. Tht l ... 'tri sinh ra Du (Chu Du), ti sao cn sinh ra Lng (Gia Ct Lng)'.

Mc d Web Matrix v MS Visual Studio.NET u l nhng cng c pht trin mng rt tuyt vi v hon chnh nhng c vi im khc bit cn lu nh sau:

Web Matrix rt nh v min ph. Web Matrix gm cc im c trng rt hu hiu nh Visual Studio.NET t nh 'drap and drop' cc Web Controls vo trong trang Web, b tr cc c tnh (properties) v c c hi quan st trang Web di dng HTML, ngun m hay k c hai dng va k, cng nh c th cng thm v x dng cc cng c t bn ngoi pht trin cc trang web d dng hn. Web Matric cn c th ym tr FTP m ta khng th i hi Visual Studio.NET Web Matrix c km theo Matrix Web Server (tng t nh Personal Web Server ca ASP c in) dng th nghim cc trang ASP.NET m ta ang pht trin, cng ging nh ta khi ng 1 ng dng trc tip bn trong Visual Basic.NET vy.

Tuy nhin, mc d Web Matrix vt tri Visual Studio.NET trong nhiu phng din, Web Matrix cng thiu st vi tin nghi m ta thch, t nh khng ym tr IntelliSense, khng ym tr Debugging cc trang ASP.NET Tht s, Web Matrix thch hp cho nhng ai 'p trai (hay p gi), hc gii, con nh ... ngho' v 100% 'free' rt tn. Ta th ngh li xem, Web Matrix em li nhiu hng th v khung IDE kh hn nhiu so vi Visual Studio.NET v Web Matrix chuyn tr cc trang ASP.NET. Cn Visual Studio.NET c th dng to ra cc thnh phn (components), cc cng c c ch (custom controls) hay cc ng dng v .NET (.NET applications). Tuy Web Matrix thiu ym tr IntelliSense nhng khng buc ta phi dng code-behind development. Ta s tip tc tm hiu thm v Web Matrix trong cc phn mc k tip v chc chn Web Matrix s li n tng su m cng nh nh hng ln lao n cng ng pht trin ASP.NET hin ti v tng lai. y ta cng ng nn cho khm phc v xin gi mt li cm n chn thnh n nhng ngi gp phn to nn mt sn phm tuyt vi nh Web Matrix.

CC C IM CA WEB MATRIX
ASP.NET Page Designer
Web Matrix l mt cng c WYSIWYG (What You See Is What You Get) rt d xi, c to ra nhm chuyn tr pht trin cc trang ASP.NET. Ta c th ko l (drag and drop) cc ASP.NET Server Controls t hp cng c (Tlbox) vo trong trang Web vi y tt c cc c tnh (porperties) cn thit c th sa i thch hp mc tiu ca trang Web, nhp i 1 Server Control trong trang Web s t ng m ra phn m (Code View) ta son ngun m cho cc s c (events) lin kt tng ng vi cc Server Event Handler.

SQL and MSDE Database Management


Web Matrix cng kt hp ym tr to ra, chn la hay thm bt cc h s lu tr trong cc c s d liu. Vic to ra new databases, add, edit hay delete cc tables cng nh cc stored procedures v ni dung ca store procedure c hnh thnh trc tip trong Web Matrix. iu c ngha, ta khng cn phi chy Enterprise Manager (trong trng hp dng MS SQL 2000 Server) hay MS Access bn ngoi Web Matrix to cc databases hay cc tables, ...

Easy Data Bound UI Generation


Web Matrix to iu kin d dng cho ta b tr cc data-bound pages m khng cn phi vit 1 dng m no. Ta cng c th n gin 'drop' SQL tables vo trang Web to ra cc data-bound grids hoc ta c th khi u vi cc khun mu son trc cho cc bo co (reports) hay cc trang Master/Detail. Ngoi ra, Code Builders cn gip ta to ra cc ngun m dng select, insert, update hay delete cc SQL data.

XML Web Service Support


Web Matrix ym tr trnh by cc dch v v SOAP-based XML Web Services, cng nh gi (call) v tiu th (consume) cc dch v XML Web Services c cung ng trn cc Server khc.

Build Mobile Applications


Web Matrix gip son ngun m 1 cch t ng cho cc loi mobile devices khc nhau t nh cell phones, pagers, ... t 1 ngun m chnh.

CI T WEB MATRIX
Trc khi ci t Web Matrix, ta cn kim tra xem cc nhu liu sau y c ci t thnh cng cha:

Windows 2000 Service Pack 2 tr ln nu ta dng Windows 2000 Professional.

.NET Framework. IE Version 5.5 tr ln. Windows Installer Version 2.0 tr ln. MS Office 2000 nu ta mun dng MS Access vi MSDE (MS Data Engine) lm c s d liu. MS SQL 2000 Server nu ta mun dng SQL Server lm c s d liu.

Bn c th ti Web Matrix xung y. Sau khi ti xung, ta nhp i vo (double-click) webmatrix.msi (c chun b ci vi MS Installer), Web Matrix s c m ra v ci t nh sau: 1. MS Installer s dng InstallShield Wizard khi ng vic ci Web Matrix:

2. Nhp Next v chn Install. Nu ta ci Web Matrix, chn Modify ci li hoc chn Repair sa cha Web Matrix. Sau theo hng dn chn ch cha ng dng v hon tt vic ci t.

I DO 1 VNG VI WEB MATRIX


1. Ta khi ng Web Matrix bng cch nhp i ASP.NET Web Matrix icon trn Desktop:

2. Web Matrix s m ra IDE vi Add New File windows nh sau:

3. Ta c th to 1 trang ASP.NET vi Filename calendar.aspx Location D:\NetVovisoft ASPNET\Bai03\Calendar c th i do 1 vng vi Web Matrix. 4. Trc ht, ta nhn thy Menu Bar nm pha di nhn hiu ng dng (Title Bar) Web Matrix rt quen thuc v theo tiu chun chung ca cc sn phm MS Windows. Menu Bar ny gm nhiu b thc n, di c cc thanh thc n (Menu Items) thch hp cho tng cng dng khc nhau v cc thanh ny cng xut hin hay du bin i ty theo chc nng ca cc trang Web hay dng (Mode) c dng trong mi trng IDE.

5. Di , ta thy Toolbar tiu chun ca Web Matrix. Standard Toolbar ny gm 1 bng cha mi cng c dng cho vic pht trin cc ng dng ASP.NET

6. Hp cng c (Toolbox) nm phi tri ca Windows chnh, cho php ta chn v ko l (drag) cc controls vo trong trang Web, Form hay cha cc cng c do ta c ch hoc do nhp t bn ngoi. Toolbox gm c 4 ngn: HTML Elements (cho cc HTML tags), Web Controls, Custom Controls v My Snippet.

7. Windows chnh ca Web Matrix gi l Document Window, ni y hin th trang Web ta phc ho. Window ny t ng to ra khi ta m hay to 1 ng dng ca Web Matrix. Pha bn di Document Window gm 4 ngn (tabs) cho 4 dng (mode) ring bit ca cng 1 trang Web: Design, HTML, Code and ALL (kt hp gia dng HTML v Code).

8. Workspace Window nm pha trn bn phi gm c 3 ngn: Workspace, Data v Open Items.

Workspace Window l ni ta t chc hay quan st File System (H Thng Tp Tin), cc Directories, cc tp tin da cng cc b (local hard drives) hay mng (network drives), ... Data Window dng ni cc c s d liu (Database), m cc tables hay lu tr cc stored procedures. Nu ta khng ci MS SQL Server 2000, Web Matrix cung cp ni ti v ci MSDE (MS Data Engine) dng vi MS Access thay v SQL 2000.

9. Properties Window nm pha di bn phi gm c 3 ngn: Properties, Classes v Community. Properties Window dng nh r tnh cht v cch biu hin trang Web, document v cc controls ca Web Matrix. Ni y cng l ni ta quan st v truy tm cc .NET Assemblies hay 'ni ... vng tay ln' ti cng ng ASP.NET tm kim cc tr gip cn thit.

TO TRANG ASP.NET VI WEB MATRIX


Vic tm hiu Web Matrix l vic lm lu di, ta s tham kho thm khi hc n cc phn mc khc ca ASP.NET t nh v ASP.NET Objects, Web Form, Database, XML, Web Services, ... Ti y, ta th to vi trang ASP.NET vi Web Matrix. Mong rng, trong khi i do vi Web Matrix, ta thu lm mt vi iu hu ch cho cc bi tp sau y: Bi tp 1:

Mc ch: Trong bi tp ny, ta s xy dng mt trang ASP.NET vi Web Matrix dng hin th 1 cun lch ch r ngy, thng, nm nh sau:

Cc bc th t nh sau:

1. Chy ng dng Web Matrix. Trong Add New File window, chn General Templates pane v chn mu ASP.NET Page. G vo hp ch Location hay dng nt Browse chn D:\Net\Vovisoft ASPNET\Bai03\Calendar v tn ca trang Web l calendar.aspx v nhp nt OK. Templates (General) Location Filename Language ASP.NET Page D:\Net\Vovisoft ASPNET\Bai03\Calendar calendar.aspx Visual Basic.NET

2. Trang Web calendar.apsx s m ra di dng Design v sn sng cho ta x dng. T hp cng c (Toolbox), ta ko l (drap) mt cng c Nhn Hiu (Label) vo Document Window v nhn nt Enter m u 1 on vn (paragraph) mi. Sau , ta ko l cng c Calendar vo v t di nhn hiu trn. Ta nh tnh cht ca cng c nhn hiu nh sau: Label ID Fonts ForeColor Text lblTitle Medium Blue Create Calendar with Web Matrix

3. Chn cng c Calendar trong Document window. Nhp Auto Format ... (nm bn di Properties Window) v chn kiu mu Colorful2 nh sau:

4. Nhp nt Run chy ng dng. Nt Run ny nm trn Toolbar, gia 1 hp ch v nt Toggle Toolbox:

5. Ta c 2 s la chn chy trang Web:

Cch 1: Dng Web Matrix Server chy trang Web trong mi trng ca Web Matrix vi port mc nh l 8080. Cch 2: Dng IIS (Internet Information Server) to Application (ta c th dng virtual directory VovisoftASPNET m ta b tr trc y) chy trang Web trong MS Internet Explorer (IE).

Khi dng cch 1 chy i chy li trang Web iu chnh hay sa li, ta phi ngng (stop) Web Matrix Server chy li, nu khng ta s to ra qu nhiu instances ca Web Matrix Server c th lm r memory (memory leaking). y l kt qu hin th trang Web cch th nht vi localhost v port 8080 c vit di dng localhost:8080

Cn cch th nh c dng hay to virtual directory trong IIS nh sau:

v hin th dng IE nh sau (trong trng hp ny, ta phi g ng i ch (URL) ca trang Web calendar.aspx mi c th hin th nh :

Tm tc
Nh ta c dp lm quen v so snh gia cc phng php x dng cc cng c cho vic pht trin cc trang Web khc nhau, t Notepad, Visual Studio.NET v by gi Web Matrix. C nhiu ngi ngi dng Web Matrix v tnh cch cng ng ca n v nht l khng c ym tr trc tip ca Microsoft. Nh l Web Matrix c phc tho (design) chuyn tr cc trang ASP.NET, cn nu mun dng cho cc ng dng khc, u ai ngn cm ta dng Visual Studio.NET. Trong mi trng pht trin ng dng ca cc c s chnh ph, cc cng ty thng mi hay cc ngn hng, ta nn dng Visual Studio.NET thay v Web Matrix v c ym tr ca Microsoft nhng t hc (trong s hay ti nh) hay chun b mu cc trang ASP.NET, Web Matrix l nhn tuyn thch hp nht, cng x dng Web Matrix cng lu, tnh ngha cng thm ... m thm tha. Ring ti th ti ... 'ghin' Web Matrix ri nn 'cn ... cht g nh, qun' na m ni, m bn.

Download Source Code

Ngun m bi tp 1

References

Ti Web Matrix y. Bn c tham kho thm v Web Matrix cng nh cc Tutorials dng Web Matrix c son tho do nhm ch trng v thit k Web Matrix. y, cng c Din n gii p cc thc mc hay tr ngi ca bn khi dng Web Matrix t nh vic ci t Web Matrix, vic ci t MSDE, ...

Bi lm nh
Cu hi 1: Web Matrix c g u vit so vi Notepad, Visual Studio.NET? Cu hi 2: K vi c trng ca Web Matrix? Bi lm 1: Dng Web Matrix pht trin 1 trang ASP.NET trong bn tp khai ph v x dng tt c cc cng c c sn trong hp cng c (Toolbox) t HTML, Serever Controls cng nh lm quen cch xc nh tnh cht c trng cho tng control mt vi Properties Windows. Bi lm 2: Ti MSDE (sau khi ci Web Matrix, vo trong Workspace Windows ngn Database truy tm ni ti MSDE), ci t MSDE vo my vi tnh ca bn cng nh tham kho cc gii p lin h n s tr ngi khi ci t MSDE.

Bi 04 Dng ASP.NET Objects vi VB.NET (Part I)


ai bit la my cy Bit sng my khc, bit my my tng ai qut sch l rng ta khuyn gi, gi ng rung cy Rung cy, rung ci, rung cnh Rung sao cho chuyn lng anh thng nng Ca Dao Vit Nam

ai c th tham kho cc i tng dng trong ASP.NET m khng c khi nim v phng php lp trnh theo khuynh hng i tng (Object Oriented Programming). Cc bi vit v OOP v Visual Basic.NET do thy L c Hng son c trnh by trang nh, ta nn tm hiu trc lm hnh trang cho vic dng ASP.NET Objects. Tht ra, nu ASP.NET ch dng ngn ng lp trnh VB.NET cng vi nhng c trng ca ngn ng ny thay v VBScript hay JavaScript pht trin (develop) trang Web th ta s khng ly g hng th cho lm. iu quan trng y l .NET Framework bao gm c ASP.NET trong cu trc nn, do ASP.NET khai thc c mi ti nguyn m .NET Framework cung ng gm c hng trm classes (built-in classes) cng nh hng nghn i tng (object) xy dng sn, gip ta nng cao (enhance) v m rng cc chc nng (functionality) cc trang Web 1 cch d dng hn. Trong bi 'Dng ASP.NET i tng (object) vi VB.NET', ta s ln lt tm hiu:

i tng (object) c bn v c tnh (properties) i tng ASP.NET Objects v phng php khai thc cc i tng Phng php lm vic vi Session v Cookies

OBJECTS C BN
i tng (Object)
Nh ta bit (hay bit nhng qun ?), Objects biu hin cho mt cm (hay nhm, b phn) ngun m c th ti s dng (reusable code) trong nh ngha r rng v y cc loi (classes - lp hay hng) i tng (object) l g cng nh phng php dng cc i tng (object) cng vi cc d liu (data) ca n. .NET Framework, ta c th tm thy loi (classes) nh ngha r rng cc i tng (object) dng cho ASP.NET nhng trong thc t, c nhiu loi (classes) khng dng hay lin quan g n ASP.NET m nu mun, ta vn c th dng c nh thng v nh trnh by, ASP.NET l 1 b phn trong cu trc ca .NET Framework .

c tnh (Properties)
Properties l cc bin s dng miu t i tng (object), t nh cy kim gi, kim pht v kim giy dng miu t ci ng h chng hn.

Methods
Methods l cc phng php dng i tng (object), t nh b tr gi, ln giy thiu hay thay pin cho ng h nu trn.

Object Instances
Trc khi ta c th s dng mt i tng (object), ta cn to ra mt instance ging nh ta c khun (class, object) to ra mt bc tng c bit no (instance). Nh vy, khi lp trnh, ta nh b tr mt bin s (variable) nm gi mt instance trong b nh (memory) ca my vi tnh. Lu l ta phi phn bit c s khc nhau gia 1 i tng tht s (actual object) v 1 i tng nh hnh (instance), bng khng chc chn ta s vo 'm hn trn' khng li thot. Tr li th d v ci ng h, ng h ni chung l ... 'ci ng h', hay gi l 'generic object'. ng h ca ta l 1 instance ca ci ng h (d nhin ta s khng cho php ai ... cm nhm). ng h ca bn ta cng l 1 instance. C hai tuy u l ng h nhng c c tnh khc nhau, t nh ng h ta bng vng, ng h bn ta bng bc, ... Nu dng VB.NET:
Clock objClock as New Clock()

trong :

Clock l i tng (object) objClock l bin s (variable) dng nm gi i tng nh hnh (instance) to ra t mnh lnh New Clock()

Static Member
Thnh vin c nh (static member) c dng trc tip b tr c tnh (properties) hay gi methods trong 1 object. Tr li th d v ci ng h, t nh ta b tr 1 my m (counter) trong khun (class) ng h kim tra xem ngi dng c bao nhiu ci ng h (clock instances) chng hn. iu ng l counter khng thuc v 1 instance no ht - n c gn dnh lin trong ci khun ng h. cng b (declare) c tnh trc tip, ta dng keywork static.

ASP.NET OBJECTS
Trong hng nghn ASP.NET Objects, ta ch c th xem xt 1 s nh tiu biu nh sau:

Response Object Request Object Page Object Session Object HttpCookie Object HttpApplication HttpServerUtility Object

Response Object
Response object cho php Server p ng, tr li hay thng tin vi Client.

Phng php (Method) Write Th d sau y dng phng php (method) Write ca Response object hin th vi hng ch Client browser:
<%@ Page Language="VB" %> <script runat="server"> sub Page_Load(obj as object, e as eventargs) dim i as integer 'Dng phng php (method) Write hin th vi hng ch sau y Response.Write("Using Write method of Response object") Response.Write("<HR width=100%\>") Response.Write("<font size=" & 3 & ">Hello Vovisoft<br></font>") end sub </script> <html> <body> </body> </html>

Ch thch: Mi khi user yu cu hin th 1 trang Web, ASP.NET to ra 1 i tng nh hnh (instance) t i tng (Object) HttpResponse c cha y c tnh v phng php (method) cn thit thng tin vi Client browser. Tn c nh ca instance l Response trong c phng php (method) Write dng vit v hin th 1 hng ch browser. k hiu \> cui m sau y. Nu ta khng dng k hiu \ phn bit 100%\> v 100%>, ASP.NET s tng ta dng %> chm dt phn script block v s to li.
Response.Write("<HR width=100%\>")

K hiu \ l 1 character sequence c bit vi tn thng dng escape character dng phn bit cc k hiu c bit c th trng vi cc k hiu ca ASP.NET hay ca VB.NET nhng nu mun hin th double quotes, ta dng double quotes double quotes.
Response.Write("<HR width=" "100%" ">")

Buffering Pages ASP.NET dng buffer kim sot (control) khi no gi sn phm (output) ti browser. y cng l kiu mu chnh (default method) ASP.NET dng, khi output c buffered, ASP.NET ch cho ti khi no tt c ngun m c thi hnh mi gi ti browser ... 'mt ln ri thi'. Trong kiu unbuffered output, m s gi ti browser tng cm hay tng phn mt - y mun ni ti 'output of each method'.

Nu ta mun tt buffer (turn buffering off), b tr m Buffer = false trc khi gi i browser:
<% Response.Buffer = False %>

<html> <body> ... ... </body> </html>

v khng th va tt buffer (trong m HTML) va gi i theo m ny c:


<html> <body>

<% Response.Buffer = False %> </body> </html> vn dng hay x dng buffer, ta dng phng php (method):

Clear Flush End

Phng php (method) Clear dng xa (clear) buffer, Flush dng gi tc khc ni dung buffer, cn End dng chn (stop) khng cho buffer gi sn phm mi i m ch cho php gi nhng g ang cha trong buffer m thi nh th d sau:
<%@ Page Language="VB" %>

<script runat="server">

sub Page_Load(obj as object, e as eventargs) dim i as integer Response.Write("Before flush<br>") Response.Flush() for i = 0 to 5000 'just wasting time next Response.Write("After flush, before clear<br>") Response.Clear() for i = 0 to 5000 'just wasting time next Response.Write("After clear, before end<br>") Response.End for i = 0 to 5000 'just wasting time next Response.Write("After end<br>") end sub </script> <html> <body> </body> </html> Redirecting Users Phng php (method) Redirect dng chuyn user qua trang Web khc 1 cch gin tip, t nh:
<%@ Page Language="VB" %> <script language="VB" runat="server">

sub Page_Load(obj as object, e as eventargs) Response.Redirect("http://www.vovisoft.com") end sub </script> <html> <body> Hello </body>

</html> Trang ny s chuyn user ti trang nh ca Vovisoft trc khi user thy c ch 'Hello'. y cng l cch thc ta dng chuyn user qua 1 trang Web khc sau khi xc nh tn v mt m (username and password) ca user trong 1 form chng hn.

Request Object
Request object dng thng tin gia Server v Client browser. Browser dng Request object gi thng tin cn thit ti Server. Ging nh Response, Request object l instance ca HttpRequest. Nh vy, Request object i din cho Client khi yu cu trang Web, cn Server s dng va Response va Request p ng yu cu hay i hi thng tin t Client. Tuy vy, object ny khng cn thit v ASP.NET lo lng, m ng hu ht trch nhim thng tin gia Server v Client browser dm ta. Nu cn th ta c vic dng, khng sao c, cng vui (the object is still there for your use). Mt ng dng quan trng ca Request object l thu thp thng tin ca Client browser. Thng, thng tin ca Client browser c gi i di dng form hay querystring (querystring: thng tin gi km vo phn ui ca request URL). Ta n c 1 th d dng querystring nh sau: http://www.vovisoft.com?username=NangVu&password=forget trong , username=NangVu v passwors=forget l 2 d kin (data) di dng cp key/value (key/value pairs). username v NangVu l kho v gi tr th nht, password v forget l kho v gi tr th nh, ... Cn ? ch th cho bit c thng tin nh km v & dng phn bit cc cp key/value vi nhau. Nh vy, ta bit c tng cng 2 d kin (data) c chuyn i t Client browser. Lu : Thng th Querystring ch dng ti a 255 characters. Server c th tm li d kin t querystring nh sau:
'Tm li ton b thng tin "username=NangVu&password=forget" Request.Querystring

'Tm li gi tr (value) "NangVu" Request.Querystring("username") Nu user trnh di dng form:


'Tm li ton b gi tr trong form Request.Form

'Tm li gi tr value "NangVu" Request.Form(username) Tm li, c 2 kiu u c dng thu thp thng tin t Client browser. Nhng, ASP.NET dng Web Form Framework chm nom, sp t mi yu cu (request) ca Client browser cho ta, nh vy ta c th ... 'qung gnh lo i' lo chuyn ... 'bao ng', a qun ... chuyn quan trng khc. Ta s tham kho v Web Form cc bi sau.

Cng cn nhc y, ta c th dng Request thu thp thng tin v ServerVariables v Cookies. ServerVariables cha thng tin ca Server t nh IP address hay HTTP protocol, ... Cookies (di hnh thc 1 tp tin) cha thng tin cn thit chnh my vi tnh ca user (Client's computer). Di y vi bin s (variables) thng dng trong b ServerVariables Collection:
Cng dng cha thng tin v URL ca trang Web tng t nh URL physical path ca ASP.NET Server site tn Web Server, t nh cantho tn nhu liu s dng cho Web Server, t nh MicrosftSERVER_SOFTWARE IIS/5.0 Variable URL PATH_INFO PATH_TRANSLATED SERVER_NAME

Page Object
Page object gm tt c c tnh (properties), phng php (method) dng cho cc trang ASP.NET v xut x t Page class .NET framework. Trong khi nim v OOP (Object Oriented Progamming), 1 khun mu (class) nh ngha mi c tnh v phng php (method) cn thit cho class cng nh k tha mi c tnh v phng php (method) ca cha m hay t tin hoc c th to ra thnh vin con, chu , ... (inherit its member and also create your own members for the child class). p dng li suy ngh nh vy vo cc trang ASP.NET. Ta thy, cc trang ASP.NET l child objects ca Page object. Mi c tnh (properties) v phng php (method) ta nh ngha trong trang ASP.NET tr thnh thnh vin trang Web, nh vy khi ta to ra 1 trang Web khc t trang Web th nht, n s tha k mi c tnh (properties) v phng php (method) theo kiu ... 'cha truyn con ni'. Page object gm vi thnh vin c bn, t nh:

Load IsPostBack Databind

Load dng khi ng (fire, start or activate) khi trang Web bt u hin th browser. IsPostBack cho ta bit form trang Web c gi i ti cng trang Web hay khng? Cn Databind ni kt mi d kin (data) t c s d liu (database) vi cng c (controls) trang Web. Ta s tham kho Databind bi ni v Database. Bi tp 1: Mc ch: Trong bi tp ny, ta tp cch s dng Load event trang ASP.NET. Tht ra, ta c th thi hnh c nhiu vic vi s c ny t nh xc minh l lch user, chuyn data t c s d liu (database) hay chuyn user qua 1 trang Web khc, ... y, ta mun hin th cu cho x giao ty theo gi gic mi khi user lt trang Web ca ta nh sau: Cc bc th t nh sau: 1. Chy ng dng Notepad v g ngun m sau:
<%@Page Language="VB" %> <script runat="server">

sub Page_Load(obj as object,e as eventArgs) dim Now as DateTime = DateTime.Now dim intHour as integer = Now.Hour lblCauChao.Text ="By gi l " & _ Now.ToString("T")+"<p>" if intHour <12 then lblCauChao.Text +="Cho bn. Mi sng sm m lt mng ri sao? Cm n nhiu." elseif intHour >12 &intHour <18 then lblCauChao.Text +="Bui tra va n va lt e au bao t y." else lblCauChao.Text +="Bui ti thng cho gi tm tnh. Bn sn sng cha?" end if end sub </script> <html> <body> <form runat="server"> <asp:Label id="lblCauChao" runat="server"/> </form> </body> </html> 2. Lu tr tp tin vi tn LoadEvent.aspx folder 'D:\Net\Vovisoft ASPNET\Bai04\LoadEvent' v chy IE vi URL nh sau: http://cantho/VovisoftASPNET/Bai04/LoadEvent/LoadEvent.aspx Nh khi lu tr, save di dng UTF-8 c th hin th ting Vit nh sau:

3. Kim tra cu cho c thch hp hay khng bng cch thay i gi ca my vi tnh trc 12 gi tra, t 12 gi tra n 6 gi chiu v sau 6 gi chiu khi chy trang Web. Phn Ch Thch:
dim Now as DateTime = DateTime.Now dim intHour as integer = Now.Hour

Trong s c Load subroutine Page_Load, ta b tr bin s (variable) Now v intHour n nh thi gian hin ti v gi vi i tng (Object) DateTime. , Now (cho bin s) trng vi c tnh (properties) Now ca i tng (Object) DateTime nhng chc nng ca chng khc bit nhau. y cng l 1 kinh nghim v lp trnh ta cn lu . Nh ngn ng lp trnh VB.NET khng theo quy c 'case sensitive', nh vy i tng (objects) mang tn MyProducts hay myproducts cng ch l mt m thi.
Now.ToString("T")+"<p>"

ToString("T") l phng php (method) chuyn dng 'Th Gi' thnh hng ch (string) hin th. y, ta nhn thy c 1 argument "T" biu hin cho 'gi' di dng 3:07:30 PM chng hn. Di y l bng lit k cc arguments dng cho i tng (objects) DateTime:
String as argument Example

"d" "D" "f" "F" "g" "G" "m" "r" "s" "t" "T" "u" "U" "y" "dddd, MMMM dd yyyy" "ddd, MMM d ""yy "dddd, MMMM dd" "M/yy" "dd-MM-yy"

1/26/2002 Thursday, January 26, 2002 Thursday, January 26, 2002 5:30 PM Thursday, January 26, 2002 5:30:45 PM 1/26/2002 5:30 PM 1/26/2002 5:30:45 PM January 26 Thu, 26 January 2002 17:30:45 GMT 2002-01-26T17:30:45 5:30 PM 5:30:45 PM 2002-01-26 17:30:45Z Thursday, January 26, 2002 17:30:45 Januray, 2002 Thursday, January 26 2002 Thu, January 26' 02 Thursday, January 26 1/02 26-01-02

Session Object
Trong bi 01 'Lm Quen vi ASP.NET', ta bit mt khi Client nhn c thng tin (information) t Server ri, qu trnh trao i qua li kt thc ngay tc khc. Sau , Server v Client tr thnh ... 'ngi xa l', coi nh l cha tng bao gi gp nhau (stateless model), ta gi l kiu ... 'lm ng' v nh vy, khi gp li, ta bit l c ... 'duyn n' g vi nhau hay khng l nh i tng (objects) Session. Session object cho php ta lu gi thng tin v ... 'ngi y' di cc dng nh bin s (variables), objects, strings hay ... bt c loi thng tin no c dnh dng ti h ti mt ch no Server trong lc h 'rong chi' trong site ca ta. Ch khi no ngi lt mng b ta 'sang ... ngang' hay nhy qua 1 site khc, by gi Session mi kt thc, mi thng tin v ... 'ngi y' u c xo sch v ngi y tr thnh ... 'c nhn', hay ng hn, l ... 'ngi dng'. Bi tp 2: Mc ch:

Dng Session object lu tr thng tin ngi lt mng v dng thng tin i thoi h tng vi nhau. Cc bc th t nh sau: 1. Chy ng dng Notepad v g ngun m sau:
<%@Page Language="VB" %> <script runat="server">

sub Submit_Click(obj as object,e as EventArgs) if tbName.Value <>"" Session("Name ")=tbName.Value Response.Write("Hi " & Session("Name ")&"!") else Response.Write("You forgot to enter a name.") end if end sub </script> <html> <body> <form runat="server"> Please enter your name: <input type="text" id="tbName" runat="server"/> <p> <asp:Button id="btSubmit" text="Submit" runat="server" OnClick="Submit_Click" /> </form> </body> </html> 2. Lu tr tp tin vi tn Session.aspx folder 'D:\Net\Vovisoft ASPNET\Bai04\Session' v hin th trang Web kim tra phng php (method) lm vic ca i tng (objects) Session vi URL sau: http://cantho/VovisoftASPNET/Bai04/Session/Session.aspx

Phn Ch Thch:
if tbName.Value <>"" Session("Name ")=tbName.Value Response.Write("Hi " & Session("Name ")&"!") else Response.Write("You forgot to enter a name.") end if

phn Script, ta kim tra 1 cch n gin xem user c tht s g ch no vo trong hp ch 'tbName' hay khng? y, ta tm b qua vic validation (ph chun hiu lc) v s tm hiu thm cc bi sau. Khi user g tn vo hp ch, ta to 1 bin s (variable) thuc Session object gi gi tr (hay ni dung, value) ca hp ch v s vn dng cc bin s (variables) trong bi tp k. Bi tp 3: Mc ch: To 1 trang Web khc dng Session object truy tm v s dng bin s ca Session bi tp 2. Nh ng ng (close) browser ta va dng hin th trang Session.aspx trn. Cc bc th t nh sau: 1. Chy ng dng Notepad v g ngun m sau: <%@Page Language="VB" %> <script runat="server"> sub Page_Load(obj as object,e as eventArgs) lblWelcome.Text ="Welcome back " & Session("Name ") end sub </script> <html> <body> <form runat="server"> <asp:Label id="lblWelcome" runat="server"/> </form> </body> </html> 2. Lu tr tp tin vi tn SessionVariables.aspx folder 'D:\Net\Vovisoft ASPNET\Bai04\Session' v hin th trang Web vi URL sau: http://cantho/VovisoftASPNET/Bai04/Session/Session.aspx Ta thy Session truy tm c thng tin trang Web khc qua bin s (variables) Name m ta cung cp:

Phn Ch Thch: Ta th tm hiu xem lm th no ASP.NET c th qun l i tng (objects) Session? Thng thng, mi khi c ngi lt mng, Session s c to ra cho ngi 1 instance, n nh 1 l lch (Session ID) ring bit, duy nht v lu tr my vi tnh ca user di dng cookie. Nh vy, khi user lt t trang ny qua trang n, ASP.NET s truy tm v c li gi tr ca cookie xc nhn user thuc v session no vi mnh lnh sau:
Response.Write(Session.SessionID)

Session ID ny di 120-bit string, bo m tnh cht duy nht cho tng user. Khi session ti hn k, cookie s c xa sch (trn thc t, tnh trng ny c th c thay i v kim sot - tuy vy ta khng bn chi tit y). Kim sot (control) Session Object C nhiu cch kim sot i tng (Object) Session trong trang ASP.NET, c bn gm c:

Timeout Abandon

Timeout dng b tr khong thi gian bao lu 1 Session c th ... 'ngi chi si nc' hay 'tht nghip' trc khi ASP.NET 't' b session , t nh c ngi lt mng thm trang Web ca ta ri ... 'b i n tra' hay ... 'ngi cht trn' khng nhp mi chut bt c g, session v cc thng tin lin h s ... 'tan bin' trong vng 20 pht. 20 pht ny l gi tr timeout mc nh (default) nu dng IIS Version 5.0, nu mun, ta c th thay i gi tr timeout thnh 60 pht chng hn:
Session.Timeout = 60

Tuy vy, ta nn cn thn khi thay i gi tr timeout ny v: Mi user lt mng u c gn hay nh km 1 i tng (Object) Session duy nht lu tr trong memory ca Server. t th d nh nu ngi ta mi cho hi chng 1 pht ri vi sang ... 'ngang' qua mng khc, nh vy session mc nh (default) 20 pht cu h vn cn .. 'hp hi' thm 19 pht na mi ... 'ngng th', rt tn memory. Nu ta c chng vi ngn hay vi trm ngn user lt mng cng 1 lc, khng kho Server ca ta phi ... 'dp tim, v hu non'. Mt khc, nht l i vi cc mng thng nghip (e-commerce site), nu b tr timeout qu ngn, cc sn phm c chn mua v t trong shopping cart s xo sch trc khi khch hng tin hnh th tc tr tin v nh vy gy tr ngi ln lao cho thng v.

Mt cch tng qut, timeout 20 pht l l tng. Tuy nhin, ta c th thay i gi tr ty theo tnh cht ca mng, i vi ngn hng (secure banking web site), timeout c th rt ngn nhng vi cc mng thng nghip, timeout s lu hn. i lc, ta phi phc tho hay tnh ton trc kh nng ca Server cho ph hp vi tnh hnh mng, ng ... 'nc n chn mi nhy'. Abandon dng kt thc 1 session ngay tc khc. Th d, sau khi user kim tra email (Web Email) xong v logout ngi khc khng th dng ... 'k' lc h vng mt, ta c th kt thc session bng cch:
Session.Abandon

Mnh lnh ny s xo sch cc cookie tm thi (temporary cookie) cng nh cc thng tin lin h. Lm vic vi Session Session c vn dng nh Array. Ta c th xuyn sut (loop through) v vn dng (manipulate) cc bin s (variables) ca Session. Bi tp 4: Mc ch: Dng i tng (Object) Session b tr vi bin s (variables) v dng For ... Next xuyn sut (loop through) v vn dng (manipulate) cc bin s (variables) ca Session. Cc bc th t nh sau: 1. Chy ng dng Notepad v g ngun m sau:
<%@Page Language="VB" %> <script runat="server">

sub Page_Load(obj as object,e as eventArgs) dim strVariable as string set up some session variables Session("Name")="Vovisoft" Session("Course")="ASP.NET For Beginner Course" Session("AMessage")="Welcome to VoviLearned Society" Session("ASPNET")="Session Object" 'Manipulate each variable in session for each strVariable in Session.Contents lblSession.Text +="<b>" & strVariable &"</b>:" & _ Session(strVariable)&"<br>" next end sub </script> <html> <body> <form runat="server">

<asp:Label id="lblSession" runat="server"/> </form> </body> </html> 2. Lu tr tp tin vi tn SessionManipulation.aspx folder 'D:\Net\Vovisoft ASPNET\Bai04\Session' v hin th trang Web vi URL sau: http://cantho/VovisoftASPNET/Bai04/Session/Session.aspx

Phn Ch Thch: Khi n nh gi tr cho cc cp bin s (variables) ca Session, ta dng kiu key/value vi key l argument ring bit v duy nht truy tm gi tr tng ng. Nh vy, ta ch cn gi Session vi key lin h trong For ... Next loop , t nh : key Name vi gi tr Vovisoft, key Course vi gi tr ASP.NET For Beginner Course, ... v gi tt c trong c tnh (properties) Text ca nhn hiu lblSession. Sessions khng Cookies Thng thng, ASP.NET dng Cookies lu tr Session ID v thng tin v user. Nhng, iu g xy ra nu browser ca user khng ym tr cookies hoc trong nhiu trng hp, user khng mun (hay chp nhn) ym tr cookies ? ASP.NET dng 1 phng php (method) khc gi l Cookie Munging tin hnh vic bo qun session khng cookies. Phng php (method) ny t khi ng nu ASP.NET pht hin ra user khng ym tr cookies. Gi phi tr l vic thng tin s chm tr i cht v ASP.NET phi m ho v gii m (encode and decode) Session ID cng vi cc thng tin lin h v t vo cc trang Web trc khi gi i. Tin trnh th t nh sau:

User yu cu hin th 1 trang Web ASP.NET s d (scan) tng ni (hyperlinks) trong m HTML (HTML code) C cui mi ni nh vy, ASP.NET s gn thm phn Session ID c m ho (encode), t nh <a href="sessionwithoutcookies.aspx?SessionID=1ma2hoa3giai4ma5hoai6lam7met8qua9...."> Khi user nhp 1 ni, ASP.NET s gii m (decode) v chuyn phn Session ti trang Web user yu cu Trang Web ny vn dng cc bin s (variables) ca Session v lp li tin trnh c th gi thng tin gia cc trang Web vi nhau

Lu :

Ta dng i tng (Object) Session khi ta cn bo tr mt vi thng tin t nh username hay password. Trong trng hp qu nhiu thng tin cn phi gi, phng php (method) dng cookies hay c s d liu (database) thch hp v hiu qu hn cng nh trnh vic r memory ca Server.

Tm tc
Trong bi hc hm nay, ta tm hiu 1 s i tng (Object) c bn ca ASP.NET. Bi k s bn thm v cc i tng (Object) khc nh HttpCookies, HttpAppliation v HttpServerUtility qua ta thu lm kin thc v vi hot ng c bn ca ASP.NET Cc i tng (Object) Request, Response v Session xem chng ging nh cc i tng (Object) ASP c in nhng tht s cung cp nhiu cng dng, khi nim v phng php lm vic (methodologies) khc hn, vng vng v hng mnh hn sau hu trng. Chng hn, i tng (Object) Session c th lu tr cc bin s (variables) xuyn qua Server Farms cng nh kh nng lu tr cc bin s (variables) ny ngay c khi Server ... 't' (crashes) hay ... 'sm' m ta s bn sau. V ngn ng lp trnh VB.NET trong cc bi tp, ta s bn 1 cch i khi nhng g lin h n ASP.NET bi hc s 6.

Download Source Code


Ngun m bi tp 1 Ngun m bi tp 2 Ngun m bi tp 3 Ngun m bi tp 4

Bi lm nh
Cu hi 1: Static member l g? Cu hi 2: ASP.NET c ym tr caching hay khng? Bi lm 1: Dng Web Matrix pht trin 1 trang ASP.NET vi s c Load (Load event) v nhn hiu (Label) hin th v thng bo cho user gi gic (current time) h ang lt mng v Session ID. Nh kim tra c tnh (properties) IsPostback ca Page object kim sot v hin th thng tin ln u user ving trang Web m thi, bn cng c th vn dng thm cng c Button v 1 thng bo (confirmation message) cho user khi h logout.

Bi 05 Dng ASP.NET Objects vi VB.NET (Part II)


Take it easy with me, please Touch me gently like a summer evening breeze Take your time, make it slow Andante, Andante - Just let the feeling grow Make your finger soft and light Let your body be the velvet of the night Touch my soul, you know how Andante, Andante - Go slowly with me now Andante - ABBA

Trong phn th 2 ca bi 'Dng ASP.NET Objects vi VB.NET', ta s ln lt tm hiu:


HttpCookie Object HttpApplication Object HttpServerUtility Object

HttpCookie Object
Nh trnh by Cookie ch l 1 tp tin nh my vi tnh ca user trong cha mi thng tin c trng cho 1 mng no , t nh tn ngi s dng v mt m (username and password) nhm lu tr thng tin c bit lin quan n tng user mt khi user lt mng (customize a user's visit to a site). Nh l Cookie ch cha cc kiu d kin n gin (simple data type), t nh strings, integers, floats, booleans, ... Mt th d ph thng l nhiu mng hin th cc tiu (headlines) cho php user chn nhng g h thch v cha thng tin c bit trong cookies, khi user ti ving thm, mng ch hin th nhng g m h la chn trc y ging nh mng ca chnh h phc tho v pht trin. HttpCookie object cung cp cc phng php (method) to ra v vn dng nhng cookies . Ta c th dng HttpCookie Object kim tra cc c tnh (properties) ca tng cookie. Tuy nhin, phng php (method) dng Request v Response Objects l cc phng php (method) thng dng nht vn dng cookie, c hai u c c tnh (properties) Cookies m gi tr ca n lin quan (it returns a reference to) n HttpCookie Object.

To ra Cookies
Ta dng Response Object to ra Cookies vi 2 cch sau:

To nhiu Cookies, mi cookie km vi mt gi tr (gi l Cookies a dng, n gi tr - multiple Cookies, each with a single value) To mt Cookie vi nhiu cp key/value (gi l Cookie n dng, a gi tr)

Th d:
'Kiu Cookies a dng,n gi tr Response.Cookies("MyCookie1").Value = "Single Cookie Value 1" Response.Cookies("MyCookie2").Value = "Single Cookie Value 2"

'Kiu Cookie n dng, a gi tr Response.Cookies("MyASPNETPage").("Username") = "Nang Vu" Response.Cookies("MyASPNETPage").("Password") = "TakeMeHome" Ta nhn thy kiu Cookies a dng, n gi - mi cookie c tn khc nhau ("MyCookie1" v "MyCookie2") vi gi tr c xc nh dng .Value = " ...". Ta khng nn dng Response.Cookies("MyCookie1") m khng c thnh phn .Value = "..." v ch tr li (return) 1 i tng (Object) HttpCookie Object, lm ta khng th b tr mt gi tr no c. Cn kiu th nh, ta dng tng cp key/value cho mi dng v gi tr ring bit nhng cookie th ch mt tn thi ( y l "MyASPNETPage"). Ta cng khng cn phi nhc ti value v ASP.NET bit r rng ta mun g khi xp t mt key (kho) chun b lu tr mt gi tr. Nh ng ... 'xo thp cm' 2 kiu trn vi nhau. Ta khng th no to ra mt Cookie va c Value va c key. ng b c dn ri "Lm mi, ti ... nm khng" y.

o hn (Expires) Cookies
Gi nh c ngi lt mng v ta to ra 1 cookie lu tr thng tin v ngi y, nhng nu ngi y ... 'ra i khng hn ngy tr li' th khng c l do g m ta 'vn gi mi trong ... tim', khng, ... trong my vi tnh ca h. Tuy h c th d dng t xa b cookie, nhng hay hn na, ta c th dng c tnh (properties) Expires ... 'ng gieo gnh nng, na ng ti em' nh sau:
'Kiu ngy gi o hn Response.Cookies("MyASPNETPage").Expires = DateTime.FromString("30/02/2003")

'hoc l 'Kiu khong thi gian o hn Response.Cookies("MyASPNETPage").Expires = DateTime.Now.AddMonths(1) Kiu u ra lnh cho Cookie o hn vo ngy 30 thng Hai nm 2003 (a, chng bit x Congo c ngy 30 thng Hai khng nh ?), cn kiu th nh o hn mt thng k t khi ngun m c thi hnh. , gi tr o hn mc nh ca cookies l 1000 pht (1,000 minutes). iu ny cng gip ta bo tr v vn dng cc thng tin to ra bi cc session hin hnh (current sessions). Nhng gi tr ny thng c thay i v thng thng, cookies dng lu tr cc thng tin trong khong thi gian lu di hn, t nh vi tun, vi thng hay c nm khng chng. xa sch (delete) cookie my Client, ta n gin b tr gi tr ca Expires thnh 0 hay gi tr thi gian thuc v qu kh, Cookie s bin mt khi user ng (close) broswer ca h. HttpCookie Object cn vi c tnh (properties) cn lu nh sau:

Domain Path HasKeys Secure

Domain dng gii hn vic s dng cookies mt domain ta ch nh, t nh www.myserver.com Path dng tng t nh Domain, nhng gii hn vic s dng cookies path ch nh no trong Server ca ta.

HasKeys bo cho ta bit Cookie dng kiu 'a dng, n gi tr' vi cc cp key/value. Secure bo cho ASP.NET bit nn chuyn cookie 1 cch an ton hay khng v thng ch xy ra trn HTTPS protocol. Gi tr mc nh (default) ca Secure l False.

Lin h (Access) vi Cookies


Client browser gi tt c thng tin Cookie ti Server mi khi yu cu hin th (display) trang Web. Ta c th dng i tng (Object) Request to thu thp cc thng tin . Ta dng cng 1 c php nh phn 'To ra Cookies' lin h vi cookie, t nh thu t gi tr v vit tr li Client browser nh sau:
'Cho kiu Cookies a dng,n gi tr Response.Write (Request.Cookies("MyCookie1").Value) Response.Write (Request.Cookies("MyCookie2").Value)

'Cho kiu Cookie n dng, a gi tr Response.Write (Response.Cookies("MyASPNETPage").("Username")) Response.Write (Response.Cookies("MyASPNETPage").("Password")) Bi tp 1: Mc ch: Trong bi tp ny, ta s xy dng mt trang ASP.NET dng Cookies lu tr 1 s thng tin Client browser v sau lin h, vn dng v hin th (display) cc thng tin trn cng 1 trang Web. Cc bc th t nh sau: 1. Chy ng dng Notepad v g hng m sau: <%@ Page Language="VB" %> <script runat="server"> sub Page_Load(obj as object, e as eventArgs) dim strVariable as string 'set up some cookie variables Response.Cookies("MyASPNETPage")("Username") = "Nang Vu" Response.Cookies("MyASPNETPage")("Password") = "TakeMeHome" Response.Cookies("MyASPNETPage")("Preference") = "800x640" Response.Cookies("MyASPNETPage")("UserAgent") = _ Request.ServerVariables("HTTP_USER_AGENT") for each strVariable in Response.Cookies("MyASPNETPage").Values lblCookies.Text += "<b>" & strVariable & "</b>: " & _ Request.Cookies("MyASPNETPage")(strVariable) & "<br>" next end sub </script> <html> <body>

<form runat="server"> <asp:Label id="lblCookies" runat="server"/> </form> </body> </html> 2. Lu tr tp tin vi tn Cookies.aspx folder 'D:\Net\Vovisoft ASPNET\Bai05\Cookies' v chy IE vi URL nh sau: http://cantho/VovisoftASPNET/Bai05/Cookies/Cookies.aspx

Phn ch thch: 'set up some cookie variables Response.Cookies("MyASPNETPage")("Username") = "Nang Vu" Response.Cookies("MyASPNETPage")("Password") = "TakeMeHome" Response.Cookies("MyASPNETPage")("Preference") = "800x640" Response.Cookies("MyASPNETPage")("UserAgent") = _ Request.ServerVariables("HTTP_USER_AGENT") trn, ta bn qua v vic b tr 'key/value' cho Cookies 'MyASPNETPage' t nh key tn "Username" cho gi tr "Nang Vu". hng m cui, ta dng b su tp (collection) Request.ServerVariables thu lm gi tr ca mt trong cc thnh vin ca n l HTTP_USER_AGENT. Thnh vin HTTP_USER_AGENT ny cho ta bit phin bn browser cu my Client. for each strVariable in Response.Cookies("MyASPNETPage").Values lblCookies.Text += "<b>" & strVariable & "</b>: " & _ Request.Cookies("MyASPNETPage")(strVariable) & "<br>" next y, ta dng For Each ... Next loop tm li gi tr ca tng 'key' trong cookie 'MyASPNETPage' v hin th cc cp key/value thnh tng hng mt nh HTML tag '<br>'. V vic dng For Each ... Next loop, ta s tham kho ring bi 6 '.NET Framework v VB.NET'.

HttpApplication Object

HttpApplication Object biu hin cho ng dng (application) ASP.NET . phn mc ny, ta ch s lt v HttpApplication Object v s o su thm chi tit cc bi sau. Xin nhc li y, ASP.NET nh ngha ng dng (application) bao gm tt c mi tp tin k c cc sub folder v cc tp tin trong 1 virtual directory t nh VovisoftASPNET m ta vn thng s dng. Cng tng t nh i tng (Object) Response, ASP.NET to ra 1 HttpApplication Object gi l Application ch khi no ng dng (application) ca ta khi ng - ngha l khi c user yu cu tham kho trang Web trong site ca ta ln u tin. Lu ch c duy nht mt Application object uc to ra cho ton b ng dng (application) m thi, khng nh Session object c to ra ring bit cho tng user mt. Tuy vy, HttpApplication Object ging Session Object ch: HttpApplication Object cng c dng lu tr cc bin s v cc i tng (Object) lin h. Cc bin s v cc i tng ny c hiu lc (available) cho ton b ng dng (application) ch khng c bit cho mt ai. Th d, ta mun hin th (display) 1 'footer' hay 'disclaim' cui mi trang Web, ta lu tr bin s (variable) t nh 'Disclaimer' ca ng dng (application) nh sau: Application("Disclaimer") = "Copyright 2002" v sau , mi trang Web ta thu lm li: Response.Write(Application("Disclaimer")) Vic dng HttpApplication Object c th gip ta trnh r memory v ch lu tr 1 ln nhng dng mi trang Web. Ngc li, nu ta lu tr cng cng mt thng tin vi Session object, ASP.NET s lu tr ring bit cho tng user v ta c th hiu c vic g s xy ra nu hng trm hoc hng nghn (hay hng triu) user ... 'n hn li ln' cng mt lc.

HttpServerUtility Object
HttpServerUtility Object c dng cung cp nhiu 'helper methods' gip gii quyt tin trnh yu cu (used in processing requests) ca user. Ta c th dng object ny di tn gi l Server lin h cc thnh vin ca HttpServerUtility Object. Cc 'helper methods' c th k ra nh sau:
Redirecting Users Formatting Strings Controlling Scripts Creating Objects

Redirecting Users
Ta lm quen vi cch chuyn user qua 1 trang Web khc vi phng php (method) Response.Redirect, phng php (method) ny gi km vi 1 dng thng tin HTTP ti browser ch th cho bit vic chuyn nh th no. Vic chuyn ny i hi 1 ng vng (round trip) khng cn thit v user phi thm trang Web ca ta trc c chuyn i. ASP.NET c th chuyn user trc trip qua trang Web khc vi phng php (method) Execute v Transfer thuc HttpServerUtility Object. Tht vy, Server.Transfer thi hnh vic chuyn qua trang Web khc 1 cch n gin m khng i hi bt c thng tin phi gi ti browser, cng vic ny tin hnh sau hu trng v user khng h hay bit. Th d sau y cho thy ngun m kim tra mt m ca user v chuyn user qua 1 trang Web khc 1 cch trc tip (v ngay tc khc):

if (strPassword == "TakeMeHome") Server.Transfer("products.aspx") end if

Formatting Strings
C 4 phng php (method) c bn cn cu to hay hnh thnh 1 hng ch (format a string):
Server.HTMLEncode Server.URLEncode Server.HTMLDecode Server.HTMLDecode Server.MapPath

HTMLEncode Mi khi ta gi kt qu (output) ti browser, ASP.NET t ng thng dch ngun m thnh dng HTML tng ng, t nh thm vo 1 'line break' sau: Response.Write("<br>") Tuy nhin, mt i khi ta mun hin th (display) chnh hng ch <br> thay v 1 'line break' trn my Client, ta c th dng phng php (method) HTMLEncode ca i tng (Object) HttpServerUtility Object. Th d sau hin th (display) kt qu ca cc k hiu &lt;br&gt; trn my Client v user s thy hng ch <br> tht s: Response.Write(Server.HTMLEncode("<br>")) Lu : &lt l ngun m ca HTML cho k hiu <, &gt cho k hiu >. URLEncode URLEncode dng nh HTMLEncode nhng hnh thnh (format) hng ch vi cc iu l (rules) dnh cho URL, t nh du ampersand (&) v du chm hi (?) mang mt ngha c trng trong cc URL, do Server.URLEncode cn chuyn cc k hiu nh vy qua dng dng cho phin bn URL (URLencoded version). Ta s thy s quan trng nh th no khi xp t 1 hng ch dng cc k hiu nh km trong 1 querystring. HTMLDecode, URLDecode Cc phng php (method) HTMLDecode v URLDecode c dng nh cc HTMLEncode v URLEncode tng ng nhng thc hin 1 tin trnh o ngc li, ngha l chuyn (dch, translate) cc chui k hiu m ha (encoded character sequences) tr li dng nguyn thy, t nh chuyn &lt; tr li k hiu < chng hn. MapPath Phng php (method) MapPath khng dng hnh thnh 1 hng ch nhng gip ta xc nh r rng cc string ta cn, nht l trong vic dch (hay chuyn) 1 virtual directory path tr li dng nguyn thu dng da cng trong Server (translate a vritual path to a physical path on a server) t nh chuyn: Server.MapPath("/VovisoftASPNET/Bai05")

thnh D:\Net\Vovisoft ASPNET\Bai05 iu ny rt tin li khi ta cn phi bit 1 physical path, chng hn nh khi cn phi c v vit cc tp tin Server. bi ny, ta s khng tham kho v vic c v vit cc tp tin Server.

Controlling Scripts
Vic kim sot s thi hnh cc ASP.NET script, HttpServerUtility object c phng php (method) ScriptTimeout. ScriptTimeout b tr khong thi gian Sever phi ch i trc kt thc 1 script. Ta c th dng mnh lnh sau b tr khong thi gian ch i l 90 giy nh sau: Server.ScriptTimeout = 90 Vic kim sot s thi hnh cc ASP.NET script cng cn thit khi ngun m ta c li (bug) t nh infinity loop c th lm t (crash) Sever ca ta, ScriptTimeout c th c b tr kt thc cc script chy qu lu hoc khng c x ng php tc hoc khng ng yu cu nh hoch nh trc. Tuy vy, ta cng , khi b tr ScriptTimeout qu ngn, c th gy tr ngi khng cn thit cho cc ngun m cn thi hnh trong 1 khong thi gian di, lu hn gi tr hin hnh ca ScriptTimeout.

Creating Objects
CreateObject c dng to ra 1 i tng (Object) nh hnh (instantiates a COM object) 1 i tng (Object) COM xc minh vi progid. Ta s tham kho chi tit cc dng phng php (method) Creating Object ny cc bi sau.

Tm tc
Trong OOP, i tng (Object) dng c tnh (properties) v phng php (method) t din t hoc cho bit mnh l g. Thng thng i tng (Object) cn nh hnh (instances) trc khi dng cc c tnh (properties) v phng php (method) , ngoi tr static members. Ta cng s lc qua v HttpCookies dng cung cp 1 c ch c v vit thng tin vo cookies, v HttpApplication i din cho ng dng v v HttpServerUtility vi cc phng php (method) gip x l cc yu cu ca Client. Ta nhn thy ngn ng lp trnh VB.NET c s dng vit cc ngun m trong phn Script cho cc trang ASP.NET, do vic tm hiu ngn ng lp trnh VB.NET l vic cn thit v quan trng i vi nhng ai mun pht trin mngvi ASP.NET . Trong bi ti, ta s bn s lc v .NET Framework, cc classes v ngn ng lp trnh VB.NET cng c php c bn c lin h t nhiu n cc trang ASP.NET

Download Source Code


Ngun m bi tp 1

Bi lm nh
Cu hi 1: K vi c tnh (properties) v ng dng dng HttpCookies?

Bi lm 1: Pht trin vi trang Web dng HttpApplication object hin th (display) cng 1 hng ch chng hn nh 'Vovisoft @ 1998 - 2002 All rights reserved'. Bi lm 2: Pht trin 1 trang Web dng HttpServerUtility object cu to (hay hnh thnh) cc hng ch theo bn vi mc ch lm quen cc phng php (method) sau y:

Server.HTMLEncode Server.URLEncode Server.HTMLDecode Server.HTMLDecode

Bi 06 ASP.NET v VB.NET
Cng gp bn tay thng yu nhau ri Ng khoai hai ma ngt mt nim vui chung vui Cho thm hng i la vng tnh Ngy mai hnh phc ni ni reo ci Qu hng thi au su ngn sng ni cch chia Ta em yu thng v cho phng Bc Khc Ht n Tnh - Xun Tin

Ta bit ASP.NET nm trong cu trc nn ca .NET framework v dng .NET programming language t nh VB.NET (mt trong 25 ngn ng lp trnh .NET hin nay) pht trin trang Web, do ta cng cn bit s lt v .NET framework cng ngn ng lp trnh VB.NET dng cho cc trang ASP.NET. Chi tit phng php lp trnh theo khuynh hng i tng (Object Oriented Programming) v VB.NET, xin tham kho cc bi vit v OOP v Visual Basic.NET do thy L c Hng son v trnh by. Trong bi 'ASP.NET v VB.NET', ta s ln lt tm hiu:

Gii thiu tng qut v .NET Framework S lt v ngn ng lp trnh VB.NET v c php Functions v SubRoutines Classes Phng php (method) lp trnh tng qut

.NET Framework
Mt cch tng qut, .NET Framework l kiu mu lp trnh cch mng cho tt c nhng g lin quan n nn Windows. Nhn li hn 10 nm, Microsoft tng bc mt ci tin nn Windows (Windows platform) ht sc nghim tc, t nhiu thnh cng rc r vi nhng API (Application Programming Interface) cho mi ng dng, vi hng lot cng c pht trin v lp trnh (developer tools) ht sc thun li cho cc K S Tin Hc cng nh cho nhng ai yu thch cc sn phm ca Microsoft. Ngoi ra, ta cn chng kin s xut hin ca COM, ri DCOM, COM+ vi mc tiu ti s dng cc ngun m hay nhu liu tng ng. Thm na, no l ODBC (Open Database Connection), DAO, OLEDB ti ADO (Active Data Object) vi rt nhiu phin bn (versions) cho vic ni kt cc c s d liu (Database) gm loi c. V phng din mng nng ng (dynamic web sites), ta c nhiu phin bn ASP c in hay v ngn ng lp trnh vi C++, J++, Visual Basic cng cc ngn ng lp trnh scripting nh VBScript, ... Nhng ... Mc d, cc cng c cng nh cc ngn ng lp trnh vi nhiu phin bn khc nhau nh va nu trn, ym tr nhng g cng ngh thng tin ang i hi - chng cng lc cng tr nn phc tp v rc ri cho cc Chuyn Gia hay K S Tin Hc, khng nhng khng theo kp tin trin hin nay m cn khng to c mt nn tng hng mnh cho vic pht trin hay p ng s thay i nhanh chng cu cng ngh thng tin cho k ngh, thng mi, i sng trong tng lai. Chng hn mt K S Tin Hc giu kinh nghim mun hc v COM - 1 phng php ht sc hng mnh gi ghm cc ngun m cho vic ti s dng - cn ti thiu 6 thng hay c nm lm quen hay nm vng. Cn nu mun hc v DCOM hay COM+, ta phi bit COM trc. cng l l do ti sao

nhiu K S Tin Hc chn nn v qu nhiu v vu hoc nhiu thm tht cho cc ng dng m ngay t tha ... 'hng hoang' phc tho mt cch ngho nn nh hng t hon cnh x hi v cng ngh lc by gi. Microsoft bit iu nn xo ... 'c lm li t u'. Vic u t vo .NET Framework vi mi ti nguyn m Microsoft (hay ... trn tri t ny) c c, cho thy s xut hin ca .NET Framework khng phi l chuyn tm ... 'c' u, a qun, ... 'tm thng' u. .NET Framework phc tho bt u t con s 0 vi tham vng bao trm mi th v cng khng qun ... nng 'bn xa' nn cc ngun m ... 'c k' ca ta vn c ym tr. Khng nhng th m Microsoft v cn lng nghe mi nguyn vng ca .. cc K S Tin Hc hay ca ta trong vic k hoch v phc tho cu trc nn .NET qua em li nhiu li ch thit thc cho ngi lp trnh hay pht trin v to vn hi mi pht trin nn Cng Ngh Tin Hc. Vic tng trnh v .NET Framework lm ta nh li s xut hin ca Linux trc y. Nhn li 10 nm va qua, Linus Torvalds (cha Linux) cng qu chn nn vi s gii hn v khuyt im ca Unix m vit li Operating System ny t con s 0 thay v c gng sa i hay v vu. Vic lm li t y ch vi mc ch l theo kp cc i hi, nu khng mun ni l vch hng i cho tng lai Tin Hc. Nu ta v s ph thng v ni ting ca nn Windows vi Microsoft (Bill Gates) nh l phi Thiu Lm th Linux s l 'Thi Cc Quyn' ca phi V ang vi Trng Tam Phong (Linus Torvalds) v mc d ch chim 0.25% th trng desktop trn th gii (trch Next Handbooks - Operating in Linux by Paul Robinson and Dan Corkery - 2002) nhng cng gp phn lm cho Cng Ngh Thng Tin thm phn c sc v mun mu mun v. Mi system u c ci hay v d khc nhau kh lng so snh t nh tuy Linux 'free OS' (v Open Source) rng buc bi GPL (GNU Public Licence by Richard Stallman) nhng gn y li chia thnh nhiu phe nhm - Nam Tng (United Linux) gm c SuSe, Caldera, Connectiva and Turbo Linux, ... v Bc Tng (Unbreakable Linux) vi Red Hat, Oracle, ... nn th phin bn Linux khc nhau c th lm ta ... 'ngt ng' chng bit theo ai, cn Windows (Close Source) vi .NET Framework rt hng mnh nhng ... li 'tn tin', nu c nhiu ng dng 'free' t nh Web Matrix ... 'cho khng biu khng' th tt cho cng ng .NET bit bao nhiu. Tuy nhin, y khng phi din n ... 'Hoa Sn Lun Kim' gia Windows, Linux hoc MAC OS nn ta gc li ch bn v .NET Framework v cc li ch ca n. Tht s, mi nn u c ci hay ca n v l nhng bng hoa p, him qu trong vn Tin Hc m ta lun lun trn trng - tt c u l sn phm tr c tuyt vi ca con ngi, nu bn c kh nng v thi gi th ... hc cng nhiu cng tt.

Li ch ca .NET Framework
y, ta khng k xit hay o su chi tit li ch ca .NET Framework m ch tm lc vi im chnh yu sau:

Mi chuyn ... 'trn tri di t' m ta mun thc hin trn nn Windows, t nh data access, windowing, ni mng hay ngay c mi cng dng a dng ca Win32 API (Application Programming Interface) u c th vn dng d dng qua kiu mu i tng (objects) rt n gin (simple object model). Ngn ng lp trnh VB.NET c hin i ha, bao gm nhiu classes v mi c trng (features) ca 1 ngn ng lp trnh kiu OOP, khng thua km g C++, J++ hay C#, ... Vic qun l memory c nng cp v tinh vi hn nhm bo m cc ng dng b t hay c x t bt (badly behaved component or application) khng nh hng g n cc ng dng khc. ASP.NET c dng thay th ASP, ng thi cung cp cc trang Web c bin dch gip tin trnh x l cc yu cu t Client browser hiu qu hn. Hn na, cn bao gm nhiu thnh phn son sn (pre-written components) gi l Server Control dng trong cc HTML Form v giao din (user interface) lm vic pht trin mng thm d dng v y hng th. Cc ngn ng lp trnh c phc tho lm vic gn nhau hn, do ngun m ca VB.NET, C++, C#, ... c th s dng trn ln vi nhau rt thoi mi, t nh ta c th vit m cho 1 class

vi VB.NET ri k tha 1 class khc m m l C# hay C++, ... sau vn 'debug' ngon lnh gia cc ngn ng lp trnh khc nhau . Thnh phn (components) c gi k trong 1 n v gi l assembly c th t xc minh l lch v cng dng lm vic b tr hay trin khai rt d dng.

Phng php lm vic ca .NET Framework


iu k th nht trong cu trc .NET Framework l cc ngun m ca VB.NET hay C# khng bin dch thnh m thi hnh gc (native executable code) m li qua trung gian mt ngn ng khc gi l IL (Intermediate Language) trc khi chy tht s. Ngun m c th bin dch thnh IL cn c gi l managed code, iu ny khin cho cc ngn ng lp trnh ca .NET hot ng (hay tc ng) qua li (h tng - interoperation) vi nhau, cho php ta vn dng mi c trng ca .NET m khng cn phi vit li cc ngun m dng ngn ng lp trnh khc. Nguyn tc ca IL cng tng t nh Java, nhng khc ch Java l cross-platform independence cn .NET l cross-language independence. Cng cn phi nhc y, Microsoft vn m rng vng tay cho vic pht trin .NET trn cc nn (platform) khc trong tng lai.

S Lc v VB.NET
VB.NET c dng to ra cc trang Web y nng ng vi tt c kh nng ca ASP.NET (hay ca .NET Framework). y, ta tm hiu tng qut v c php, cu trc v phng php lp trnh vi VB.NET c lin h t nhiu n cc trang ASP.NET v hy vng gt hi c vi khi nim c bn vic lp trnh xung s hn. Phn ny, ta s s lc qua cc vn sau:

i khi v VB.NET Variables v Arrays Operators Cc iu kin (conditional), looping v branching logic Functions v Subroutines Event Handler Classes Vi ng dng ch li thng dng

i khi v VB.NET
VB.NET l mt trong 25 ngn ng lp trnh ca .NET c ym tr bi .NET Framework v CLR. VB.NET khc hn VB6 v tht s chuyn mnh thnh 1 ngn ng lp trnh OOL chnh yu khng khc g vi mi ngn ng lp trnh khc t nh C#, C++, J++, ... trong mi trng xy dng mi ng dng cho nn Windows v quan trng hn c l vic hc VB.NET d dng hn nhiu (its learning curve is not very steep). Do , VB.NET c chn l ngn ng lp trnh cho cc trang ASP.NET ca kha t hc ny. Nu bn thch, bn c th dng C# hay C++ thay v VB.NET cho mi bi tp trong kha, chuyn i qua i li gia cc ngn ng lp trnh ch l chuyn ... nh, v s khc bit phn ln l v c php (syntax) ch nguyn tc v cu trc lp trnh th ging y chang. Nh l d ta dng bt c ngn ng lp trnh no, khi bin dch vn phi qua ngn ng trung gian Intermediate Language (IL) v qun l bi CLR.

Variables v Arrays

Variables

Variables l t tng qut gi l bin s dng lu tr d kin (data) trong b nh (memory) ca my vi tnh. Ta phi tuyn b (declare) bin s trc khi dng vi keyword Dim t nh declare myVariable vi loi (Data Type) String:
'Kiu explicit declaration - VB.NET c bo cho bit ta mun lu tr 1 string trong memory location Dim myVariable As String

Data Types chia ra lm 5 categories gm 10 loi c bn gi l primitive types:


Type Byte Short Integer Long Single Double Decimal Char Date Boolean Category Integers Integers Integers Integers Floating-ppints Floating-ppints Floating-ppints String Dates Boolean Description 1 byte (c bit nh System.Int) 2 bytes (System.Int16) 4 bytes (System.Int32) 8 bytes (System.Int64) 4 bytes vi decimal point (System.Single) 8 bytes (System.Doublel) 12 bytes (System.Decimal) single Unicode character (System.Char) ngy gi (Ssytem.DateTime) C/Khng hay ng/Sai , True/False (System.Boolean)

Arrays
Arrays l 1 tp hp cc bin s c lin h ring bit qua ch s (index) ca Arrays. Nh l Arrays dng trong VB.NET bt u vi index bng s 0 - ngha l mn hng (item) u tin c lu tr index 0, t , suy ra ch s (index) mn hng sau cng s l tng s cc mn hng tr i mt. Mi bin s trong Array phi cng loi d kin (same data type), khng th trn ln nhiu loi khc nhau. Array c tuyn b (declare) nh th d sau y:
'Tuyn b array gm 9 phn t (hay thnh phn - elements) thuc loi Integer Dim myArray(9) As Integer

'Tuyn b array gm 12 phn t vi gi tr mc nh (default) thuc loi String Dim yourArray( ) As String = { "T", "Su", "Dn", "Mo", "Thn", T", _ "Ng", "Mi", "Thn", "Du", "Tut", "Hi" }

Operators (K hiu Ton)


Operators l cc k hiu dng thi hnh 1 cng vic thuc phm vi Ton Hc, t nh du = dng n nh (assign) 1 gi tr chng hn nh: strSkills = "Thi Cc Quyn" d dng trong vic vn dng cc du Ton Hc ny, say y l bng lit k:
Cng dng (Function) Exponentiation Unary negation (t nh -9) Multiplication, division Division by (t nh 6/2 = 3) Modulus (t nh 6 Mod 4 = 2) Addition, Substraction Bitwise NOT, AND, OR v XOR Concatenation (for string) Equal to, not equal to, less than, greater than Less than or equal to, greater than or equal to Relational Assigment Operators (Cc du Ton Hc) ^ +, *, \ / Mod +, BitNot, BitAnd, BitOr, BitXor &, + =, <>, <, > <=, >= TypeOf ... Is, Is, Like =, ^=, *=, /=, =, +=, -=, &=

Logical NOT, AND, OR v XOR

NOT, AND, OR, XOR

iu kin (conditional), looping v branching logic


Ta s tham kho c php 3 logic sau:

Conditional Logic Looping Logic Branching Logic

Conditional Logic
Conditional Logic cho php ta ch nh ngun m no c thi hnh ty theo iu kin t ra c ph hp hay khng. C nhiu phng php (method) qun l conditional logic nh sau:

Phng php (method) dng If statements Phng php (method) dng Case statements

If statements
Tng cng 3 kiu c php nh sau:
If (condition) Then (your code) ... ... End If

Nh vy, nu iu kin c tho mn (condition = True), ngun m gia If v End If s c thi hnh hoc:
If (condition) Then (your code for condition = True) ... ... Else (your code for condition = False) ... ... End If

thi hnh ngun m khi condition = True hoc False v


If (condition 1) Then (your code for condition 1 = True) ... ... ElseIf (condition 2) Then (your code for condition 2 = True) ... ... Else (ngoi ra, thi hnh code y - your code for condition 1 and condition 2 = False) ... ... End If

thi hnh ngun m khi condition 1 = True hoc condition 2 = True hoc khi c hai condition 1 v condition 2 = False.

Case statements

Case statement thng gi l Select statement ging nh trng hp If vi nhiu ElseIf nhng Case ch kim tra mt bin s v ty theo gi tr ca bin s m p ng sao cho thch hp. C php nh sau:
Select Case variable Case option 1 Code for option 1 Case option 2 Code for option 2 Case Else Code End Select

Looping Logic
Looping logic cho php ta ti thi hnh (hay lp i lp li) 1 cng vic no cho ti khi tho mn iu kin nh trc. Kiu ny gm c 3 loi:

While Do For

While Loops
Rt tin li trong trng hp ta khng bit trc phi lp i lp li cng vic bao nhiu ln. Nh vy, kiu loop ny c bn da trn biu thc c iu kin (conditional expressions) v loop ti thi hnh cho n khi iu kin nh trc tr thnh False. C php ca 1 While loop nh sau:
While condition Your Code End While

Th d ta mun b tr 1 my m (counter) t 1 n 9 v hin th (display) kt qu bng s browser:


'B tr counter loi Integer vi gi tr 1 Dim intCounter As Integer = 1

'B tr While loop v hin th (display) gi tr ca counter browser While intCounter < 10 Response.Write(intCounter & "<br>") intCounter += 1 End While Ta nhn thy khi gi tr ca intCounter bng 9, loop s hin th (display) s 9 v sau cng 1 vo intCounter thnh ra 10 s khin cho iu kin intCounter < 10 s tr thnh False, m s nhy ra (exit) khi loop (loop exit), do ta ch thy browser hin th (display) cc s t 1 n 9 m thi.

Do Loops
Do loop cng tng t nh while loop, ch khc ch Do loop thi hnh cng vic trc ri mi kim tra iu kin xem c ph hp khng? Kiu ny c th gi l kiu ... 'tin trm hu tu' khc vi While loop l ... 'tin tu hu trm' (?). C php nh sau:
'B tr counter loi Integer vi gi tr 1 Dim intCounter As Integer = 1

'B tr Do loop v hin th (display) gi tr ca counter browser Do Response.Write(intCounter & "<br>") intCounter += 1

Loop While intCounter < 10 Ln ny c s khc bit so vi While loop v Do loop hin th (display) gi tr ca intCounter trc, cng thm 1 ri mi kim tra iu kin. Ta phi lu th t thi hnh trong trng hp ny, t nh ta b tr gi tr ca intCounter = 10 chng hn, ta thy browser s hin th (display) 10 trc khi loop kim tra iu kin l intCounter phi nh hn (<) 10 v m nhy ra khi loop sau .

For Loops
Ta dng For loop khi bit trc s lp i lp li vic thi hnh ngun m bao nhiu ln. My m trong trng hp ny (t ng tng hay gim ty theo cch b tr) s thng bo chnh loop ca n khi no chm dt. C php nh sau:
For intCounter = 1 to 10 Response.Write(intCounter & "<br>") Next

hoc l:
For intCounter = 10 to 1 Step -1 Response.Write(intCounter & "<br>") Next

For loop cn c 1 dng khc l For each ... loop, thng dng vn dng cc thnh phn (hay yu t elements) trong 1 b su tp (collection) t nh Array chng hn:
'B tr 1 Array gm cc ngy trong tun Dim arrayWeekDays( ) As String = {"Mon", "Tue", "Wed", "Thu", "Fri"}

For each strDay in arrayWeekDays Response.Write(strDay & "<br>") Next Thay v dng s nh trng hp my m intCounter trong 2 dng For loop trn, y For each ... in dng 'strDay' n nh tng elements mt theo th t 'Mon', 'Tue', .... cho ti 'Fri' trong b su tp array mang tn 'arrayWeekDays'. Do , ta thy browser s hin th (display) 5 hng ch, mi hng l ngy trong tun.

Infinite Loop
coi chng trong khi dng cc loop m ta phi t qun l vic tng hay gim my m cho loop, nu khng kho, ta s ri vo ... 'm hn trn' khng c li thot gi l infinite loop. y cng l 1 trng hp ngu nhin m ln u tin b con khm ph ra virus v infinite loop nhanh chng tiu hao hay lm kit qu cc ti nguyn trong mng v i khi c th ko c mng t bt ng (cause the site to crash). Nu ta mun nhy ra khi loop trc loop chm dt, ta c th dng keyword Exit Do (trong Do loop) hay Exit For (trong For loop), t nh:
'B tr counter loi Integer vi gi tr 1 Dim intCounter As Integer = 1

'B tr Do loop v hin th (display) gi tr ca counter browser Do Response.Write(intCounter & "<br>") intCounter += 1 If intCounter = 8 then Exit Do

End If Loop While intCounter < 10 hay


For intCounter = 1 to 10 Response.Write(intCounter & "<br>") If intCounter = 8 then Exit For End If Next

Branching Logic
Branching logic cho php ngun m thi hnh nhng hng khc nhau, t nh ta mun ngun m ti thi hnh mt v th khc v c th c dng i dng li nhiu ln trong cc tnh hung khc nhau. Tng qut c 2 loi barnching logic:

Functions Subroutines

phn bit, ta Functions tnh ton cc gi tr cn Subroutines thi hnh cc cng vic (Functions compute values and Subroutines perform actions), nh vy Functions s tr li thng tin tnh ton v ni gi Functions, ngc li Subroutines thi hnh cng tc no nhng khng tr li g ht (return nothing).

Functions
C php nh sau:
Function FunctionName (Parameter1 As Type, ... , ParameterN As Type) As ReturnType 'you code here Return ReturnValue End Function

Vi VB.NET Function tin dng: Sau y l vi VB.NET Functions son sn trong .NET Framework ta c th dng trong trang Web ca kha: Cc functions v Date v Time
Function date(datetime) dayofweek dateDiff(dateinterval, date1,date2[, firstdayofweek[, dirstdayofyear]]) hour(time) isdate(datetime) minute(time) month(datetime) now( ) second(time) year(datetime) Phn din t cng dng Tr li 1 s t 1 ti 31 biu th ngy trong thng. Tr li 1 s t 0 (Sunday) ti 6 (Saturday) biu th ngy trong tun. Tr li 1 s din t khong thi gian cch bit gia 2 ngy: ngy 1 (date1) v ngy 2 (date2). S ny c th di dng yyyy (year), q (quarter), m (month - thng), y (day of year), d (day), w (weekday), ww (week), h(hour), n (minute) hay s (second). Tr li 1 s t 0 ti 23 biu th gi trong ngy. Tr li 1 s Boolean xc minh datetime c phi l 1 ngy hp l khng? Tr li 1 s t 0 ti 59 biu th pht trong gi. Tr li 1 s t 1 ti 12 biu th thng trong datetime. Tr li di dng datetime ngy gi hin thi Tr li 1 s t 0 ti 59 biu th giy trong pht. Tr li 1 s biu th cho nm (c gi tr t 1 ti 9999)

Cc Functions v Ton Hc
Function abs(value) Phn din t cng dng Tr li gi tr tuyt i (absolute) ca value.

atan(value) cos(value) exp(value) fix(value) hex(value) int(value) log(value) oct(value) rnd round(value [, dec]) sin(vlaue) sqrt(value) tan(value)

Tr li s arctangent ca value. Tr li s cosin ca value. Tr li s exponent ca value. Tr li phn integer ca value, rounding up cho cc s m (negative numbers). Tr li s hexadecimal ca value (base 10 to base 16). Tr li phn integer ca value, rounding down cho cc s m (negative numbers). Tr li s nature logarithm ca value. Tr li s octal ca value (base 10 to base 8). Tr li s ngu nhin. Tr li s rounds to integer or with dec (decimal places) vi ca value. Tr li s sin ca value. Tr li s cn 2 (squareroot) ca value. Tr li s tangent ca value.

Cc Functions v hnh ch (Strings)


Function instr(start, ]string1, string2[, compare) left(string, length) len(string | variable) mid(string, start[, length]) replace(expression, find, replace[, start[, count[, compare]]]) right(string, length) Phn din t cng dng Tr li s biu th v tr 1 ca string 2 trong string 1, ngoi ra tr li s 0. Compare c th di dng 0 (=BinaryCompare) hay 1 (=TextCompare). Tr li 1 string cha 1 s ch (di = length) bt u t pha bn tri ca hng ch. Tr li 1 s biu th chiu di ca string hay tng s bytes m variable cha ng. Tr li 1 string cha trong 1 string khc, bt u t v tr start ko di vi gi tr ca length. Thay th gi tr find trong biu thc expression bng gi tr replace bt u c v tr start vi s ln thay th count. Lu gi tr mc nh ca count l -1 - ngha l thay th tt c g truy tm c, compare dng di dng 0 hay 1 nh trong phn instr. Tr li 1 string cha 1 s ch (di = length) bt u t pha bn phi ca hng ch.

Subroutines
C php nh sau:
Sub SubroutineName (Parameter1 As Type, ... , ParameterN As Type) 'you code here End Sub

Th d subroutine Page_Load rt ph thng m ta thng dng trong cc trang ASP.NET :


Sub Page_Load (Obj As object, e As eventargs) 'you code here End Sub

Cc bin s (variables) trong ( ) gi l thng s (parameters hay arguments), nu hp thnh 1 nhm, ta gi parameter list. Subroutine chuyn v vn dng cc gi tr ca thng s vo bn trong subroutine thi hnh 1 cng tc no . Bi tp 1: Mc ch: Lm quen cch vit v s dng parameters cho Subroutine ton nhn vi 2 s chng hn. 1. Chy ng dng Notepad v g hng m sau:
<%@Page Language="VB" %> <script runat="server"> sub Page_Load(obj as object,e as eventargs) MultiplyNumbers(2,2) MultiplyNumbers(18,28) MultiplyNumbers(300,200) end sub sub MultiplyNumbers(intA as integer,intB as integer) Response.Write(intA *intB &<br>")

end sub </script> <html> <body> Testing subroutines 'MultiplyNumber' completed. </body> </html>

2. Lu tr tp tin vi tn multiply.aspx folder 'D:\Net\Vovisoft ASPNET\Bai06\Multiply' v chy IE vi URL nh sau: http://cantho/VovisoftASPNET/Bai06/Multiply/Multiply.aspx

Phn ChThch: Ta nhn thy khi gi (call) 1 subroutine, ta ch cn dng tn ca subroutine km vi cc thng s (parameters) ta mun gi vo v vn dng trong subroutine. Trong m trn, ta gi subroutine 'MultiplyNUmber' 3 ln, trong ta s vn dng cc thng s vo bi ton nhn v hin th (display) kt qu trong browsers vi i tng (Object) Response v phng php (method) Write. Lu : Trong VB.NET v ASP.NET , ta bt buc dng parentheses ( ) khi gi cc subroutines, khc vi VBSCript hay VB6 khng cn dng parentheses. Nu ta gi subroutine MultiplyNumber theo c php sau, s to li: MultiplyNumber 2, 2

Event Handler
Ny , ta thy 1 trong nhng thng s (parameters) s dng bi tp trn l thng s v s c (EventArgs). Trong cc trang Web ca ASP.NET , s c c th xy ra bt c lc no, t nh user nhp mi chut vo 1 nt no trn Form hoc nhp vo 1 hnh nh, do ta cn chun b v to ra ci gi l event handler c th p ng li cc s c . C php ca event handler ging y chang nh c php ca subroutine, s khc bit l nm parameters list vi thng s ch ring cho loi EventArgs. Khi 1 s c khi ng, s c s to ra cc bin s nhm din t vic g xy ra v event handler s da trn cc bin s phn ng sao cho thch hp. Bi tp 2: Mc ch:

To 1 trang ASP.NET vi nt bm Submit v event OnClick lin h vi Subroutine Button_Click ... 'bt qu tang' user va mi nhp mi chut vo nt bm . 1. Chy ng dng Notepad v g hng m sau:
<%@ Page Language="VB" %> <script runat="server"> Sub Button_Click(obj As Object, e As EventArgs) Response.Write("You clicked the button named: " & obj.Text) End Sub </script> <html> <body> <form runat="server"> <asp:button id="btSubmit" Text="Submit" runat=server OnClick="Button_Click"/><p> </form> </body> </html>

2. Lu tr tp tin vi tn events.aspx folder 'D:\Net\Vovisoft ASPNET\Bai06\Events' v chy IE vi URL nh sau: http://cantho/VovisoftASPNET/Bai06/Events/Events.aspx

Phn Ch Thch: 1. Thng s u tin subroutine Button_Click l loi Object data type, obj As Object i din cho i tng (Object) gy ra s c, y chnh l nt bm (button) mang tn 'btSubmit'. 2. Thng s th 2 l s c 'e' loi EventArgs, thng s ny cha mi thng tin c trng cho bin c ang, s hay xy ra. 3. Trc khi user nhp mi chut vo nt bm ny (l lch ca nt bm - ID l 'btSubmit') th thng s 'e' trng rng, sau khi user nhp vo nt bm, 'e' cha th trong c s c 'Click'. Trong Form, ta xp xp ngun m bo cho nt bm 'btSubmit' hay rng bt c khi no s c Click khi ng, lp tc thi hnh subroutine 'Button_Click', v nh vy, ta nh ngha v xy dng 1 event handler thnh cng.

Classes

Classes l phn ta xc nh hay nh ngha cc i tng (Object) t nh nh ngha 1 ci ng h, ta din t kim gi, kim pht, kim giy cng cc con s ch gi, cch b tr gi gic hay ngy thng nm, ... Tng t nh th, class nh ngha i tng (Object) qua cc c tnh (properties) v cc phng php (method) biu th c trng cho class. Ta nn nh r 1 iu: 'Mi th trong .NET Framework hay VB.NET u i biu cho classes'. C php nh sau:
Class classname properties subroutines functions End Class

Trc khi dng, nh instantiate class ra 1 i tng (Object). C hng h sa s Base Classes trong .NET Framework ta khng th no k ra xit y, tng qut c th gom vo nhng loi (catogories) sau:

String Collections v Arrays: t nh Arrays, Lists, Maps, Linked Lists, ... WinForms: dng hin th (display) Windows v cc Controls t nh Text Boxes, Combo Boxes, List Boxes, File Dialogs, ... Web Forms: phc tho dng cho mng, ta s o su chi tit bi k. File Handling: dng lt qua li (navigate) cc file system trong my hay trong mng, kim tra c tnh (properties) ca files, read, modify hay write cng nh chuyn (move) v sao chp (copy) cc tp tin hay folders. Registrry Access: lt qua li, c hay vit ni dung ca registry. Internet: ni vo mng, ti ln hay ti xung cc tp tin. ADO.NET: ni vo cc c s d liu (database) v vn dng cc records vi 1 khi nim mi v disconnected data cng nh s dng XML chuyn data i khp mi ni mi ch.

Inheritance
Inheritance nm vai tr quan trng trong classes v OOP (Object-Oriented Programming) v tnh cht k tha ca n. Ta khng cn phi to ra 1 class mi hon ton khi c 1 class tng t nh ci ta mun (who wants to re-invent the wheel?) m ch cn to ra nhnh (ging nh nhnh cy) da vo gc (base class). Tr li trng hp ci ng h, t nh ta to ra 1 class gi l Clock, ri sau mi sc nh ra c 2 loi ng h: analog v digital. Thay v qung ci Clock class i v to ra 2 ci mi Analog class v Digital class, ta c th xy dng class mi ly Clock class lm c bn (base class) v thm vo nhng g c trng n hay lin h n loi ca Clock l Analog hay Digital. Tnh cht k tha ny em li vn hi mi cho cc K S Tin Hc khi xy dng cc ng dng v lm cho vic pht trin, trin khai v bo tr tr nn d dng hn, b ... nht 'u' hay bc ... 'ru'. C php nh sau vi th d v AnalogClock:
Class AnalogClock: Inherit Clock private ClockWound ASP.NET Boolean = False Sub WindClock( ) ClockWound = True End Sub End Class

Phng php (method) lp trnh tng qut

Ngoi vic nm vng k thut v c php lp trnh, thit tng, ta cng nn bn 1 cch tng qut v phng php (method) xy dng tiu chun cho vic lp trnh cc ng dng (ni chung) v ASP.NET (ni ring). Nh y ch l mt s khi nim c bn khi ta mun pht trin cc d n ng dng lp trnh VB.NET cho cc trang ASP.NET trong kho hc ny. Cc tin trnh c nhc n y nhm mc ch hiu r cc bc cn thit trong vic lp trnh khi p dng cho mt d n thc t trong cng ty ca mnh.

1. Requirement Specifications (c im k thut cn thit)


Mc d khi trnh by cc ti trong kho ny, ta ch s lc v cc c im k thut cho cc bi tp, bi lm nh hay d n nhng ta c th da vo m linh ng xp xp cc c im k thut cn thit ph hp cho d n ca ta trong tng lai. Ngoi ra, ta c th thm bt sao cho d n ca mnh c thm nhiu cng dng thch hp yu cu i hi ca khch hng. Trn thc t, Software Consultant phi phng vn nhiu ngi trong cng ty c mt hnh nh y vn v Requirement Specifications.

2. Design (Thit k)
T Requirement Specifications bc qua giai on Thit k. Lc ny ta s thy c nhiu im khng c nu r trong Requirement Specifications v cn lm cho sng t (clarification) hn. Cng vic ny do Systems Analyst thc hin. Nu d n ln th c Software Architect thit k tng qut trc khi chia ra cc Team Leaders ( thng thng l Systems Analysts). Trong giai on ny c khi phi lm Prototype (th m hnh mu) bit chc k thut mnh dng c kh nng v thch hp vi nhu cu d n khng. Thit k l giai on quan trng nht trong chu k pht trin mt nhu liu. Chng nhng ta ngh cch xy dng nhu liu, m cn k hoch chi tit cch th lc no, u trong code. Ta phi tng tng mi hon cnh bt thng (unusual scenarios) nhng c th xy ra tm gii php i ph. Trong cc cng ty nh hoc trung (small business), Web Master s lm mi chuyn t ... 'cy kim' cho ti ... 'phi thuyn' khi thit k cc trang ASP.NET.

3. Coding hay Implementation (Tho chng)


y l giai on tho chng v debug. Trong phn Debug th c Unit Test (th tng b phn) v Integration Test (th chung). Mi khi c sa i mt cht th phi th li nhiu th nn nu c th vit Test Script t ng ha cng vic th ny (gi l Regression Test) th tit kim rt nhiu thi gi. Nu nhu liu phi phn ng nhanh chng (good response) trong khi chy Real-Time th phi th n trong hon cnh phi gii quyt nhiu thnh cu cng mt lc (gi l Stress Test).

4. Acceptance Test (Chy Th)


Khi nim tng qut v vic kim tra Functional and Acceptance Testing nh sau: S kim tra Functional and Acceptance Testing cng ng gp mt phn rt quan trng trong vic lp trnh. Mt cch tng qut, trong nhiu kiu kim tra th s kim tra v mt chc nng (Functional Testing) gip ngi trin khai kim sot li xem phn lp trnh ng dng c ph hp vi mi chc nng t ra trc theo yu cu ca d n. Cn s kim tra v mt tha nhn (Acceptance Testing) l kim sot xem ng dng c ph hp vi hon cnh hay mi trng s dng hay khng, t nh chy th trong cc nn Windows khc nhau, trong cc phin bn Browser khc nhau, trong cc loi Browser khc nhau hay cng phin bn nhng screen resolution khc nhau, ... Trong nhiu trng hp ti cng ty ca khch hng, Software Consultant chng kin cc giai on chy th xem nhu liu x l mi chuyn ng nh lit k trc y. Cc cng chuyn x l chy c nhanh khng, nht l trong trng hp nhu liu phi gii quyt rt nhiu thnh cu cng mt lc. Trong nhng hon cnh bt bnh thng, nhu liu c ng vng khng hay 't' bt ng. Nu d n ln, trc Acceptance Test cn c thm mt giai on gi l Factory Test khi Software Consultant n tn cng ty chng kin ta chy th.

5. Commissioning, Roll-Out (p dng)


Khi cho p dng ri l bt u giai on Bo m (Warranty) v Bo tr (Maintenance). Bo tr l thm ving li nhu liu cha tr Bug (fixing bugs) hay sa i (modification) hay lm thm (enhancement). Lc by gi ta s thy gi tr ca mt nhu liu c ch thch t m. Thng thng nhu liu ta bo tr l do ngi khc vit hoc do chnh mnh vit t lu ri, khng cn nh na, nn nu c km documentation v c ch thch r rng th cng vic bo tr s d dng hn rt nhiu. Khi lp trnh cho mt cng vic hay d n nh, c khi ta khng ch nhiu n giai on Requirement Specifications. Sau ny lc vit code ri mi khm ph ra vic mnh lm khng ng nh iu khch hng mun th rt phin. Nu Specifications vit r rng th ta c th xin thm tin thay i (variation), nhng c khi khch hng vn trch l ta khng chuyn nghip (professional) v c th mnh mt khch trong tng lai. Tin trnh 6 l tr li tin trnh ban u nhm mc ch kim tra Chu K Pht Trin Nhu Liu nhiu ln gim thiu li v nht l khi c s thay i trong phn specifications hu c th nng cp 1 cch hiu qu.

Tm tc
bi ny, ta bn s lc v .NET Framework v tham kho vi chi tit v c php ca ngn ng lp trnh VB.NET cng phng php (method) lp trnh gip ta xy dng v pht trin cc trang Web 1 cc hiu qu. Mt cch tng qut, ta c 5 loi bin s (variables) v 3 loi logic. Cc logic Conditional, Looping v Branching ny rt cn thit trong vic gip ta ti thi hnh cc ngun m mt khi tho mn iu kin nh trc. Ta cng phn bit c s khc nhau gia Functions v Subroutines v lt s qua khi nim cng cch vn dng cc event cng nh classes v khi nim Inheritance trong OOP. Trong bi k 'Web Form - Part I', ta s tham kho v Web Form v vai tr ca n trong ASP.NET . Web Form l 1 khi nim mi v hp dn trong mi trng mng v Web Form cho php ta kim sot ... 'ng tnh' ca user qua cc objects hin th (display) trong User Interface nhng li nm phi Server. Wow!

Download Source Code


Ngun m bi tp 1 Ngun m bi tp 2

Bi lm nh
Cu hi 1: Is VB.NET case sensitive? Cu hi 2: Trong VB6 ta c bin s variant, chuyn g xy ra cho variant VB.NET? Cy Hi 3: Khi no ta dng For loop v khi no dng While loop?

Bi lm 1: To 1 trang ASP.NET dng class PERSON biu th v ngi v object di din cho chnh bn vi c tnh (properties) gii tnh (Nam/N), mu tc (xanh, en, mui tiu, bc, ...), mu mt (en, , ...), mu da (ngm, bnh mt, en, ...) v ngy thng nm sinh. Dng c tnh (properties) dayofweek ca datetime xc nh ngy bn sinh l ngy no trong tun v dng 1 nt bm Submit gi phng php (method) ny cn gnh hin th (display) kt qu browser.

You might also like