159
Lưu hành nội bTrang 1 Chƣơng 1: Lp Trình Web & ASP.Net Kết thúc chƣơng này các bạn có th: Trình bày được khái niệm ứng dụng thương mại điện tử Mô tả được các khái niệm cơ bản về Web,kiến trúc Client-Server 2 lớp và 3 lớp. Mô tả được các ngôn ngữ lập trình Web: HTML, DHTML, VBScript,JavaScript. Trình bày và cài đặt được Web Server IIS. Trình bày được các đặc điểm của ASP và ASP.Net Sdụng được Visual Studio .Net 2008 để to ng dng Web 1.1 Gii Thiu vng Dng Web Cùng vi sphát trin mnh mvcông nghthông tin, đặc bit là sphát trin hthng mạng intranet, internet... Trong các lĩnh vực ngày nay như : thương mại, y tế, giáo dc..., nhu cầu trao đổi thông tin thc slà cn thiết, giúp cho công việc được trin khai nhanh , chính xác, ddàng và tiết kiệm chi phí, thông tin được cp nht kp thời. Do đó vấn đề đặt ra là chúng ta cn phi có mt ng dụng cho phép trao đổi thông tin mi lúc, mọi nơi, dễ sdụng,… thông qua mng. ng dụng Web đáp ứng được các yêu cầu đặt ra và sau đây là các lý do tại sao chúng ta phi sdng Web : Ddàng trao đổi và chia sthông tin thông tin qua mng . Sdng giao diện đồ họa giúp cho người dùng dsdng . Htrvmultimedia như : hình ảnh , âm thanh, phim ảnh,… Htrnhiều chương trình(web-browser) để truy cp Web. Htrtruy cp web trên các thiết bđi động: PocketPC, SmartPhone,… Htrnhiu ngôn ngđể phát triển Web: ASP, ASP.NET, JSP, PHP… Web client (Browser) Máy khách(Client) ssdụng chương trình để truy cập đến các trang web gi là trình duyt web hay browser. Hin rt nay có nhiu trình duyệt web như : Internet Explorer , Nescape, Mozila FireFox,.. Web server Các máy ch(Server) cha các ng dng Web, sn sàng truy xut các trang web hay các tài liu và gi vcho client khi nhận được yêu cu tphía Client. Hin nay có rt nhiu Web server và chy trên nhiu hthống như : Apache, Microsoft,Sun,… Giao thc HTTP Quá trình giao tiếp giữa client và server được thc hin thông qua giao thc chun HTTP(HyperText Transfer Protocol).Hình minh ha sau mô tvic truy cp ng dng Web.

GT Web Server

  • Upload
    kell-bi

  • View
    134

  • Download
    1

Embed Size (px)

Citation preview

Chng 1:

Lp Trnh Web & ASP.Net

Kt thc chng ny cc bn c th : Trnh by c khi nim ng dng thng mi in t M t c cc khi nim c bn v Web,kin trc Client-Server 2 lp v 3 lp. M t c cc ngn ng lp trnh Web: HTML, DHTML, VBScript,JavaScript. Trnh by v ci t c Web Server IIS. Trnh by c cc c im ca ASP v ASP.Net S dng c Visual Studio .Net 2008 to ng dng Web 1.1 Gii Thiu v ng Dng Web Cng vi s pht trin mnh m v cng ngh thng tin, c bit l s pht trin h thng mng intranet, internet... Trong cc lnh vc ngy nay nh : thng mi, y t, gio dc..., nhu cu trao i thng tin thc s l cn thit, gip cho cng vic c trin khai nhanh , chnh xc, d dng v tit kim chi ph, thng tin c cp nht kp thi. Do vn t ra l chng ta cn phi c mt ng dng cho php trao i thng tin mi lc, mi ni, d s dng, thng qua mng. ng dng Web p ng c cc yu cu t ra v sau y l cc l do ti sao chng ta phi s dng Web : D dng trao i v chia s thng tin thng tin qua mng . S dng giao din ha gip cho ngi dng d s dng . H tr v multimedia nh : hnh nh , m thanh, phim nh, H tr nhiu chng trnh(web-browser) truy cp Web. H tr truy cp web trn cc thit b i ng: PocketPC, SmartPhone, H tr nhiu ngn ng pht trin Web: ASP, ASP.NET, JSP, PHP

Web client (Browser) My khch(Client) s s dng chng trnh truy cp n cc trang web gi l trnh duyt web hay browser. Hin rt nay c nhiu trnh duyt web nh : Internet Explorer , Nescape, Mozila FireFox,.. Web server Cc my ch(Server) cha cc ng dng Web, sn sng truy xut cc trang web hay cc ti liu v gi v cho client khi nhn c yu cu t pha Client. Hin nay c rt nhiu Web server v chy trn nhiu h thng nh : Apache, Microsoft,Sun, Giao thc HTTP Qu trnh giao tip gia client v server c thc hin thng qua giao thc chun HTTP(HyperText Transfer Protocol).Hnh minh ha sau m t vic truy cp ng dng Web.

Lu hnh ni b

Trang 1

Hnh 1.1: Minh ha truy cp ng dng Web Web c pht trin trn m hnh client-server Giao thc HTTP: Qu trnh giao tip gia client v server c thc hin thng qua giao thc chun HTTP(HyperText Transfer Protocol). M hnh gm hai thnh phn chnh l: my khch(client) v my phc v(server). My phc v(server) s cha cc ng dng Web v cc ng dng Web ny s c qun l tp trung bi trnh qun l gi l Web Server (IIS,). Cc my khch(client) truy cp n ng dng web s dng trnh duyt web(browser). Client s dng giao thc HTTP Request gi yu cu(trang web) ln Server, Server x l v s dng giao thc HTTP Response gi kt qu v cho Client.

Ngn ng HTML Ngn ng chun to mt trang Web. HTML cho php ngi vit c th phn chia v trnh by thng tin trn mt trang tin. HTML n gin, d hc. HTML n gin l tp tin c phn m rng .htm(.html), s dng cc th(tag): kiu vn bn, danh sch, cc lin kt(hyperlinks) Chng ta c th dng FrontPage, DreamWeaver thit k cc trang HTML, Ngn ng nh du HTML s dng cc k hiu quy nh sn (c gi l tag) trnh by ni dung vn bn.

Hnh 1.2 Trang siu vn bn HTML Lu hnh ni b Trang 2

Th d 1.1: Ni dung trang web Sample.htm ASP.Net Cho cc bn n vi ASP.Net 3.5!!! Client Scripting v Server Scripting Cc ngn ng dng vit m cho trang web. Mt trang web c x l Server v tr kt qu v cho Client. Do cc ngn ng vit m cho trang web c chia thanh hai dng:

ClientScript: c x l ti trnh duyt (Browser) trn my Client. Cc ngn ng dng vit l :VBScript, JavaScript, DHTML o JavaScript l ngn ng ph bin s dng nhiu nht hin nay. JavaScript c dng kim tra vic nhp liu, kim tra trnh duyt,

o DTHML:l s kt hp ca HTML,Style Sheet(CSS) v JavaScript nhm lm cho trang web d tng tc, iu khin v gim bt vic x l pha Server. o VBScript l ngn ng script ca Microsoft. Chc nng ca VBScript cng ging nh JavaScript.

Server Scripting: c x l ti Web server trn my Server. Cc ngn ng dng

vit l :ASP,ASP.NET,PHP,JSP, Trong gio trnh ny chng ta s kho st ngn ng ASP v ASP.NET. Cc m hnh ng dng

M hnh ng dng 2 lp

Hnh 1.3 M hnh 2 lp (Two Tier) y l mt dng m hnh n gin, kh ph bin ca mt ng dng phn tn. Trong m hnh ny, vic x l d liu c thc hin trn Database Server, vic nhn v hin th d Lu hnh ni b Trang 3

liu c thc hin Client. u im D liu tp trung -> m bo d liu c nht qun. D liu c chia s cho nhiu ngi dng. Khuyt im Cc x l tra cu v cp nht d liu c thc hin Database Server, vic nhn kt quv hin th phi c thc hin Client -> Kh khn trong vn bo tr v nng cp. Khi lng d liu truyn trn mng ln -> chim dng ng truyn, thm gnh nng choDatabase Server.

M hnh ng dng 3 lp

M hnh 2 lp phn no p ng c cc yu cu khc khe ca mt ng dng phn tn, tuy nhin, khi khi lng d liu ln, ng dng i hi nhiu x l phc tp, s ngi dng tng, m hnh 2 lp khng th p ng c. M hnh 3 lp s dng thm Application Server gi nhim v tng tc gia Client v Database server, gim bt cc x l trn Database server, tp trung cc x l nhn v hin th d liu ti Application server.

Hnh 1.4 M hnh 3 lp (Three Tier) u im H tr nhiu ngi dng Gim bt x l cho Client -> Khng yu cu my tnh Client c cu hnh nh. X l nhn v hin th d liu tp trung ti Application Server ->d qun l, bo tr v nng cp. X l truy cp d liu tp trung ti Database Server. Khuyt im Phi s dng thm mt Application Server -> Tng chi ph. 1.2 Gii Thiu v ASP & ASP.NET 1.2.1 Gii Thiu v ASP Lu hnh ni b Trang 4

Active Server Page (ASP) do Microsoft pht trin l mi trng lp trnh pha server(server side scripting) h tr mnh trong vic xy dng cc ng dng thng mi in t (cc trang Web ng). Cc ng dng ASP rt d vit v d sa i, ng thi tch hp cc cng ngh sn c ca Microsoft nh : COM, T khong cui thp nin 90, ASP (Active Server Page) c nhiu lp trnh vin la chn xy dng v pht trin ng dng web ng trn my ch s dng h iu hnh Windows. ASP th hin c nhng u im ca mnh vi m hnh lp trnh th tc n gin, s dng hiu qu cc i tng COM: ADO (ActiveX Data Object) - x l d liu, FSO (File System Object) - lm vic vi h thng tp tin, ng thi, ASP cng h tr nhiu ngn ng: VBScript, JavaScript. Chnh nhng u im , ASP c yu thch trong mt thi gian di. Mt ng dng ASP c trin khai trn Web Server l IIS( Internet Information Service) c sn trong mi trng Windows. c th trin khai ng dng ASP trn cc mi trng khc ta phi ci t cc th vin h tr ASP. c im ca trang ASP L mt tp tin vn bn (text file) c phn m rng .asp. Phn m rng ny s gip Web server yu cu trnh x l trang asp(ASP engine) trc khi tr v cho trnh duyt. Ngn ng script thng dng nht vit m ca ASP l VBScript. Ngoi ra ta cng c th vit m bng cc ngn ng khc nh: JavaScript, Perl, Python,nu trn Web server c ci t cc b x l ngn ng ny. Cc on m vit trong trang ASP s c cc b x l ngn ng trn Web server x l tun t t trn xung di. Kt qu ca vic x l ny l tr v trang m HTML cho web server v web server s gi trang HTML ny v cho trnh duyt(Browser), do ti trnh duyt khng th thy c cc on m chng trnh vit trong trang ASP. Mt trang ASP gm 4 phn : D liu vn bn (text) Cc th (tag) HTML. Cc on m chng trnh pha client t trong cp th v . M chng trnh ASP c t trong cp th . Ba thnh phn u tin l cu trc ca mt trang HTML thng thng, do c th xem mt trang ASP l mt trang HTML c nhng thm phn x l vit bng m ASP(VBScript, JavaScript). Th d 1.2: Minh ha trang ASP. to my website. Today is Lu hnh ni b Trang 5

Kt qu thc thi :

Hnh 1.5: Minh ha kt qu trang Sample.asp u im Trang ASP c din dch mt cch t ng. Xy dng ng dng Web ng. X l d liu ng hiu qu. Nhc im: Ch s dng hai ngn ng kch bn phi nh kiu(non-type): VBScript v JavaScript. S dng trnh thng dch cho cc trang ASP. Cc on m lnh v giao din (HTML) trn ln vi nhau. Khng s dng li c (reuse) cc on m. Khng h tr c ch by li (Debug). 1.2.2 Gii thiu v ASP.NET Nh chng ta bit, ASP vn cn tn ng mt s kh khn nh Code ASP v HTML ln ln, iu ny lm cho qu trnh vit code kh khn, th hin v trnh by code khng trong sng, hn ch kh nng s dng li code. Bn cnh , khi trin khai ci t, do khng c bin dch trc nn d b mt source code. Thm vo , ASP khng c h tr cache, khng c bin dch trc nn phn no hn ch v mt tc thc hin. Qu trnh x l Postback kh khn, u nm 2002, Microsoft gii thiu mt k thut lp trnh Web kh mi m vi tn gi ban u l ASP+, tn chnh thc sau ny l ASP.Net. Vi ASP.Net, khng nhng khng cn i hi bn phi bit cc tag HTML, thit k web, m n cn h tr mnh lp trnh hng i tng trong qu trnh xy dng v pht trin ng dng Web. ASP.Net l k thut lp trnh v pht trin ng dng web pha Server (Server-side) da Lu hnh ni b Trang 6

trn nn tng ca Microsoft .Net Framework. Hu ht, nhng ngi mi n vi lp trnh web u bt u tm hiu nhng k thut pha Client (Client-side) nh: HTML, Java Script, CSS (Cascading Style Sheets). Khi Web browser yu cu mt trang web (trang web s dng k thut client-side), Web server tm trang web m Client yu cu, sau gi v cho Client. Client nhn kt qu tr v t Server v hin th ln mn hnh. ASP.Net s dng k thut lp trnh pha server th hon ton khc, m lnh pha server (v d: m lnh trong trang ASP) s c bin dch v thi hnh ti Web Server. Sau khi c Server c, bin dch v thi hnh, kt qu t ng c chuyn sang HTML/JavaScript/CSS v tr v cho Client. Tt c cc x l lnh ASP.Net u c thc hin ti Server v do , gi l k thut lp trnh pha server. ASP.Net c Microsoft pht trin qua nhiu phin bn t ASP.Net 1.0 , 1.1, 2.0 v gn y nht l phin bn ASP.Net 3.5 chy trn .Net Framework 3.5 s dng mi trng pht trin tch hp (IDE) Visual Studio.Net 2008 . Trong gio trnh ny chng s dng ASP.Net 3.5 Ti sao phi s dng ASP.Net ? Yu cu v xy dng cc ng dng thng mi in t ngy cng uc pht trin v nng cao. Khi ASP khng cn p ng c yu cu t ra. ASP c thit k ring bit v nm tng phi trn h iu hnh Windows v Internet Information Service, do cc cng dng ca n ht sc ri rt v gii hn. ASP.Net a ra mt phng php pht trin hon ton mi khc hn so vi ASP trc kia v p ng c cc yu cu t ra.Hnh 4.5 minh ha cc thnh phn bn trong ASP.Net 3.5

Hnh 1.6: Cc thnh phn ca ASP.Net 3.5 Cc u im ca ASP.Net ASP ch s dng VBScript v JavaScript m khng s dng c cc ngn ng mnh khc : Visual Basic, C++ Trong khi ASP.NET cho php vit nhiu ngn ng : VBScript,JavaScript, C#, Visual Basic.Net,

ASP.Net s dng phong cch lp trnh mi: Code behide. Tch code ring, giao din ring . D c, d qun l v bo tr. Lu hnh ni b Trang 7

Trong cc trang ASP chng ta phi vit m kim tra d liu nhp t ngi dng , ASP.NET h tr cc validation controls kim tra chng ta khng cn vit m,... H tr pht trin Web c truy cp trn cc thit b di ng: PocketPC, Smartphone H tr nhiu web server control . H tr thit k v xy dng MasterPage lng nhau. H tr by li (debug) JavaScript Cho php ngi dng thit lp giao din trang Web theo s thch c nhn s dng Theme, Profile, WebPart Tng cng cc tnh nng bo mt (security) H tr k thut truy cp d liu mi LINQ H tr k thut xy dng cc ng dng a phng tin SilverLight H tr k thut bt ng b ASP.Net Ajax ASP.Net h tr mnh m b th vin phong ph v a dng ca .Net Framework, lm vic vi XML, Web Service, truy cp c s d liu qua ADO.Net, ASPX v ASP c th cng hot ng trong 1 ng dng. Kin trc lp trnh ging ng dng trn Windows. H tr qun l trng thi ca cc control T ng pht sinh m HTML cho cc Server control tng ng vi tng loi Browser H tr nhiu c ch Cache. Trin khai ci t : Khng cn lock, khng cn ng k DLL, cho php nhiu hnh thc cu hnh ng dng H tr qun l ng dng mc ton cc: Global.aspx c nhiu s kin hn, qun l session trn nhiu Server, khng cn Cookies Trang ASP.Net c bin dch trc. Thay v phi c v thng dch mi khi trang web c yu cu, ASP.Net bin dch nhng trang web ng thnh nhng tp tin DLL m Server c th thi hnh nhanh chng v hiu qu. Yu t ny lm gia tng tc thc thi so vi k thut thng dch ca ASP.

Hnh 1.7 Minh ha qu trnh bin dch trang ASP.Net Th d 1.3: Minh ha trang ASP.Net hin th ngy hin hnh.

Lu hnh ni b

Trang 8

ASP.Net 3.5 Hnh 1.6: Ni dung trang Default.aspx using using using using using using using using using using using using System; System.Collections; System.Configuration; System.Data; System.Linq; System.Web; System.Web.Security; System.Web.UI; System.Web.UI.HtmlControls; System.Web.UI.WebControls; System.Web.UI.WebControls.WebParts; System.Xml.Linq;

namespace Sample { public partial class _Default : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { lbMsg.Text = lbMsg.Text + DateTime.Now.ToString("dd/MM/yyyy"); } } Hnh 1.7: Ni dung trang Default.aspx.cs }

Lu hnh ni b

Trang 9

Hnh 1.8: Kt qu trang Default.aspx Qu trnh x l tp tin .ASPX Khi Web Server nhn c yu cu t pha client, n s tm kim tp tin c yu cu thng qua chui URL c gi v, sau , tin hnh x l theo s sau:

Hnh 1.9: Qu trnh x l tp tin .aspx 1.3 Web Server IIS Trong phn ny chng kho st v IIS (phn mm Web Server ca Microsot dnh cho Windows), ng thi hng dn bn ci t, cu hnh v kim tra Web Server trn cc h thng s dng Windows 2000, Windows XP, Windows Server 2003,Vista, Lu hnh ni b Trang 10

Internet Information Services IIS c th c s dng nh mt Web server, kt hp vi ASP xy dng cc ng dng Web tn dng cc im mnh ca Server-side Script, COM component, theo m hnh Client/Server. IIS c rt nhiu phin bn, u tin c pht hnh ri trong bn Service pack ca WinNT. Cc phin bn Windows 2000 c tch hp IIS 5.0. Windows XP tch hp IIS 5.5 Windows Vista tch hp IIS 6 Cc bc ci t Web Server trn Windows XP Professional Windows XP tch hp sn IIS nhng khng t ng ci t do , bn phi t ci IIS nu h thng c ci ri. Bc 1. Chn Control Panel | Add/Remove programs. Bc 2. Add/Remove Windows Components.

Ci t Web Server

Hnh 1.10 : Ci t IIS t a Windows XP Bc 3. nh du vo mc Internet Information Services (IIS). Bc 4. Chn nt Details chn cc mc chi tit. Bc 5. Chn cc mc cn ci t trong bn nh chn: FrontPage 2000 Server Extensions v Internet Information Services Snap-In Bc 6. Nhp nt Next (c th Windows yu cu a CD Windows XP ) ci t hon tt. Lu hnh ni b Trang 11

Bc 7: xc nh vic ci thnh cng Web Server, ta c th kim tra nh sau: M trnh duyt (Browser) : Microsoft Internet Explorer v g http://localhost/localstart.asp vo hp a ch v sau nhn Enter th trang localstart.asp mc nh s xut hin nh sau.

Hnh 1.11: Minh ha ci t IIS thnh cng Localhost l a ch ca my cc b m bn ang lm vic. Nu my ca bn ang kt ni vo mng LAN v c mt a ch IP, bn c th dng a ch ny thay cho localhost. xc nh a ch IP ca my mnh: Vo menu Start|Run v g lnh: command hoc cmd Trn mn hnh DOS, g lnh: ipconfig v xem phn IP Address Khi g //localhost, bn s thy trong thanh a ch t ng i thnh: http://localhost. HTTP l giao thc mc nh c dng trn Internet. V HTTP l mt giao thc thuc b TCP/IP, bn cn c a ch IP cc my tnh khc trong mng c th truy cp c n trang web ca bn. Sau khi ci t Web Server, mc nh trn a C:\ s c sn th mc C:\inetpub\wwwroot. y l th mc m Web Server mc nh nh x vo //localhost, do , cc trang web t trong wwwroot c th c truy cp bi cc my tnh khc. 1.4 To mi ng dng Web vi ASP.NET Lu hnh ni b Trang 12

Chng ta s bt u bng vic lm quen vi mi trng pht trin ng dng (IDE) ca Visual Studio.NET. VS.NET 2008 c nhiu thay i so vi cc bin bn trc. Hnh di l mn hnh khi u ca VS.NET 2008. Vng lm vic chnh gia ang hin th trang Start Page, Recent Projects, Visual Studio Developer News. Visual Studio Developer News cn mt kt ni vi Internet download cc thng tin t website ca Microsoft v my tnh ca chng ta. Recent Projects lit k cc project m chng ta lm vic trong thi gian gn y. Trn mc ny, chng ta cng c th to mi mt project bng cch nhn vo nt New Project.

Hnh 1.13 : Ca s giao din MS Visual Studio .NET 2008 1.4.1 To ng dng ASP.NET u tin Chng ta c th to ng dng Asp.Net s dng Visual C# Project theo cc bc sau: Bc 1. Chn t thc n File | New | WebSite. Xut hin hp thoi to mi Project (hnh 1.14). Chn loi Language l Visual C# Chn ASP.Net Web Site t vng Templates ng dng mi c to mc nh c tn l WebSiteXX (XX l s th t t ng). Chng ta c th thay i tn ca Project ti mc Location. Trong v d ny, chng ta thay i tn Project WebSite1 thnh MinhHoa.

Ti mc Location : Trang 13

Lu hnh ni b

Nu ta chn gi tr l File System th ng dng s c to ra trong th mc theo ng dn m ta ch nh v d : D:\DotNet2008\WebSite1, khi ta chy ng dng th VS.Net s to ra mt Web Server o v s dng Web server ny thc thi ng dng.

Hnh 1.14: Mn hnh to mi WebSite Nu nh ta chn gi tr l HTTP,ch ta g vo ng dn: http://localhost/WebSite1 th ng dng s c to ra trong th mc mc nh l C:\Inetpub\wwwroot vi tn l WebSite1, khi ta chy ng dng th VS.Net s s dng Web server l IIS m ta ci t trn my. 1.4.2 Thit k giao din thc thi v ng dng Trn hp cng c (Toolbox), nu cha c hp cng c chn View/ToolBox , m th Standard (cha cc Web Server Control) click vo ln lt hai iu khin (Control) nhn (Label) v dn vo trang Default.aspx. Nhp ni dung thuc tnh Text cho hai iu khin dng nhn theo bng 1.1 Bng 1.1: Tn iu khin lblChao lblThoiGian [Chui rng] Thuc tnh Text Cho bn n vi lp trnh ASP.Net 3.5

Lu hnh ni b

Trang 14

thanh cng c

phn m HTML

phn giao din

Hnh 1.15: Mn hnh thit k trang Default.aspx vit lnh cho trang Default.aspx cc bn vo menu View | Code hay nhn phm F7 , mn hnh vit lnh xut hin nh hnh 4.10 v vit lnh cho s kin Page_Load :namespace MinhHoa { public partial class _Default : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { lblThoiGian.Text = "Ngy gi hin hnh" + DateTime.Now.ToString("dd/MM/yyyy hh:mm:ss"); } } }

Thc hin vic gn ni dung cho thuc tnh Text ca iu khin nhn lblThoiGian nh trong hnh. Nhn F5 hoc Ctrl + F5 thi hnh ng dng. ng dng s c bin dch (compiler) kim tra li v hin ni dung ra trnh duyt mc nh trn my Kt qu nh hnh 1.16.

Lu hnh ni b

Trang 15

Hnh 1.16: Mn hnh kt qu hin th trang Default.aspx 1.5 Kho st giao din Visual Studio .NET 2008 Solution Explorer Hin th ca s Solution Explorer: menu View | Solution Explorer

Hnh 1.17 Ca s Solution Explorer y l ca s qun l cc "ti nguyn" c trong ng dng. Thng qua ca s ny, chng ta c th: Thc hin cc chc nng: sao chp, ct, dn trn tp tin, th mc nh Windows Explorer. T chc th mc qun l ng dng: S dng chc nng Add | New Folder t thc n ng cnh. Thm thnh phn mi cho ng dng: S dng chc nng Add | Add New Itemt thc n ng cnh. Xut hin hp thoi Add New Item, hnh 1.18 o o o Web Form: Thm trang Web Class: Thm lp i tng Web User Control: Thm iu khin ngi dng,....

Lu hnh ni b

Trang 16

Hnh 1.18: Mn hnh thm mi Item Xc nh trang web khi ng cho ng dng trong trng hp chng ta c nhiu trang web o Chn trang cn khi ng -> Nhp chut phi (xut hin thc n ng cnh) -> Chn Set As Start Page. o Xc nh Project khi ng (trong trng hp Solution c nhiu Project): Chn Solution v t (thc n) menu ng cnh chn Set as StartUp Project t thc n ng cnh.

Hnh 1.19 Chn trang thc thi u tin trong ng dng Property Window o Hin th ca s Properties Window: Thc n View | Properties Window. Lu hnh ni b Trang 17

o Thng qua ca s thuc tnh, chng ta c th thit lp thuc tnh cho trang web v cc i tng c trong trang web. Hnh 1.20 Toolbox o Hin th Toolbox: Thc n View | Toolbox

Hnh 1.20: Web Server Control

Lu hnh ni b

Trang 18

BI THC HNH CHNG 1: Bi 1: To ng dng cho php ngi dng la chn mu a thch trn trang ASP.NET nh sau:

Giao din ca chng ta c 3 checkbox v mt button. Khi button c click th hm x l s kin button click c thc hin v kim tra checkbox no c chn v hin th ni dung tng ng ln. Hng dn: Chng ta c file aspx nh sau: phn ni dung trong th c nhp v ko th cc iu khin CheckBox v Button trong th HTML ca hp cng c.

Ni dung trang Default.aspx :

Lu hnh ni b

Trang 19

Bn thch nhng mu no?

Xanh dng
Xanh lc

Code x l pha server nh sau:public partial class _Default : System.Web.UI.Page { protected void submit(object sender, EventArgs e) { string sResult =""; if (red.Checked) sResult = ", "; if (green.Checked) sResult = sResult + "xanh lc, "; if (blue.Checked) sResult = sResult + "xanh dng"; p1.InnerHtml = "Bn thch mu: " + sResult; red.Checked = false; green.Checked = false; blue.Checked = false; } }

Lu hnh ni b

Trang 20

Chng 2 :

Tm hiu v s dng cc Server Controls

Trong bi ny, chng ta tp trung tm hiu cc loi Server controls. Cc vn chnh s c cp : Cu trc mt trang ASP.NET Bin c ca trang ASP.NET Gii thiu ASP.NET Server Controls Cc loi HTML Server Controls v Web server Controls Thuc tnh IsPostBack ca trang ASP.NET v AutoPostBack ca cc Web Server Controls Kt thc bi ny cc bn c th : S dng c cc Web Server Controls xy dng cc trang ASP.NET. 2.1 Cu trc trang ASP.NET Chng ta to mt trang ASP.NET tn ChaoMung.aspx, nhp chn File|New|File (hoc Ctrl+N), hoc trong ca s Solution Explorer nhp R-Click|Add New Item .., xut hin hp thoi sau :

Hnh 2.1 Hp thoi thm thnh phn mi vo ng dng ang m. Chn mc Web Form, nhp Name : ChaoMung.aspx, nhp nt Add, mt trang mi c thm vo ng dng. 2.1.1 Cc phng php vit m trong ASP.NET ASP.NET cho php vit m lnh theo 2 m hnh sau: M hnh Code Inline (Code Inline Model) M hnh Code Behind (Code Behind Model)

Hnh 2.2 Trang ChaoMung.aspx mi c thm vo Lu hnh ni b Trang 21

Code Inline Model: Trong m hnh ny, phn m ASP.NET v m HTML c vit trong cng mt trang, m ASP.NET c vit phn . nm trong trang ASP.NET nhng khng trn ln vi m HTML dnh cho phn ni dung (content section). Chng hn nh ta c th t phn m trong trang ChaoMung.aspx ln trn cng tch khi phn m HTML . void Page_Load(object sender, EventArgs e) { lblChao.Text = "Lp trnh Web vi ASP.Net 3.5"; } Chao mung

Kt qu thc thi trang trn :

Hnh 2.3 Minh ha phn HTML code ca trang ChaoMung.aspx

Code Behind Model: Trang 22

Lu hnh ni b

Trong m hnh ny, phn m ASP.NET c c sp xp trong mt tp tin khc ring bit vi phn m HTML. Ta c th vit m theo x l bin c cho trang ChaoMung.aspx theo cc bc sau: Bc 1: Trong ca s Solution Explorer, chn trang ChaoMung.aspx ,nhn phi chut v chn ViewCode . Bc 2: Sau khi VS.Net to mt tp tin tn l ChaoMung.aspx.cs ta vit lnh : lblChao.Text = "Lp trnh Web vi ASP.Net 3.5" vo trong s kin Page_Load .public partial class ChaoMung : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { lblChao.Text = "Lp trnh Web vi ASP.Net 3.5"; } }

Kt qu nh trn :

Hnh 2.4 Minh ha phn Code behind ca trang ChaoMung.aspx So vi CodeInline th Code Behind vit m lnh (code) d hn do tch c phn giao din v phn m HTML ring bit ng thi c th s dng li cc on m vit (reuseable codes) trong tp tin .aspx.cs 2.1.2 Cu trc ca trang ASP.NET Mt trang ASP.NET thng thng gm 3 phn: Phn 1: c gi l Page Directives, phn ny cung cp cho ASP.NET nhng thng tin c bit trnh bin dch bit cch thc thi trang ASP.NET, cng nh nhng thng tin dng trong tin trnh bin dch (during the compiling process), gm cc thng tin sau:

: Khai bo cc bin dch trang. Language : khai bo ngn ng c s dng vit m cho trang (C#, VB.Net) AutoEventWireup: nu gi tr l true th cc s kin ca trang c t ng gi ng tn nh Page_Load m khng cn khi to s kin ch n phng thc Page_Load. CodeFile : Ch r tn tp tin code behind c phn m rng .aspx.cs (cha cc on m thc thi cc bin c) c lin kt vi trang ASP.NET c phn m rng .aspx. Inherits : Cho bit l trang giao din tha k t lp no l tn ca lp (class) ca tp tin code behind, theo th d l trang ChaoMung.aspx.cs. Phn 2: ... , phn ny cn gi l Code Declaration Block, ging nh m pha client (Client Side) nhng c km theo thuc tnh runat="server" cho bit on m ny c thc thi pha server (Server Side). Ta c th t phn ny bt c Lu hnh ni b Trang 23

ni no trong trang web , nhng phn bit m ca ASP.NET vi m ca HTML ta nn sp xp phn u tin ca trang. void Page_Load(object sender, EventArgs e) { lblChao.Text = "Lp trnh Web vi ASP.Net 3.5"; }

Phn m ny to ra mt phng thc (hm) c tn l Page_Load mc nh (default) cho cc trang ASP.NET, phng thc ny s thc hin gn chui "Lp trnh Web vi ASP.Net 3.5" vo trong thuc tnh Text ca Label Control mi khi trang c thc thi. Phn 3: ... , y l ni ta bt u phn m ca HTML. Phn ny chnh l hnh thc trnh by ni dung ca trang c son bi m ASP.NET trc khi gi v v hin th trong trnh duyt (browser) ca Client. Ngoi ra, ASP.NET cng cho php ta km theo nhng ch th (instructions) trong Code Render Block bt u vi Bi thc hnh 2_1: Xy dng mt ng dng Web vi tn WebSiteChap2_1 c cc thnh phn sau :

thm th mc App_Code, R-Click trn tn ng dng trong ca s Solution Explorer, chn Add ASP.NET folder v chn tip App_Code :

Sau to mt lp Product.cs trong th mc App_Code , R-Click trn th mc App_Code, chn Add New Item :

Lu hnh ni b

Trang 24

G tn trong khung Name l Product.cs v nhp ni dung sau :// Define the delegate that represents the event. public delegate void PriceChangedEventHandler(); public class Product { private string name; private decimal price; private string imageUrl; public string Name { get { return name; } set { name = value; } } // Define the event. public event PriceChangedEventHandler PriceChanged; public decimal Price { get { return price; } set { price = value; // Fire the event, provided there is at least one listener. if (PriceChanged != null) { PriceChanged(); } } } public string ImageUrl { get { return imageUrl; } set { imageUrl = value; } } public string GetHtml() { string htmlString; htmlString = "" + name + "
"; htmlString += "Costs: " + price.ToString() + "
"; htmlString += ""; return htmlString;

Lu hnh ni b

Trang 25

} public Product(string name, decimal price) { Name = name; Price = price; } }

Vit m lnh cho trang Default.aspx : private void Page_Load(object sender, EventArgs e) { Product saleProduct = new Product("Kitchen Garbage", 49.99M); saleProduct.ImageUrl = "garbage.jpg"; Response.Write(saleProduct.GetHtml()); } Product Test

Kt qu thc thi :

2.2 Bin c ca trang ASP.NET Khi lm vic vi trang ASP.NET, bn c th bt gp mt s bin c ca trang theo th t nh sau : PreInit, Init, InitComplete, PreLoad, Load, LoadComplete, PreRender, PreRenderComplete, UnLoad. khai bo cc bin c trang ASP.NET, bn vo thc n View|Component Design hay RClick| View Component Design trong ca s Solution Explorer. Lu hnh ni b Trang 26

Sau , nhp chn biu tng event ( ca trang s c hin ra nh hnh 2.5

) trong ca s Properties, danh sch cc bin c

Hnh 2.5 Danh sch cc bin c ca trang ASP.NET Init S kin Page_Init xy ra u tin khi trang web c yu cu. Load S kin ny l ni m bn s t phn ln cc x l, gi tr khi ng ban u cho trang web. S kin ny lun xy ra mi khi trang web c yu cu. PreRender S kin ny xy ra khi trang Web chun b c tr v cho Client. Unload S kin ny i lp vi s kin Page_Init. Nu nh s kin Page_Init xy ra u tin khi trang Web c yu cu, th y, Page_Unload l x kin sau cng, xy ra sau tt c nhng s kin khc. Th d 2-1: Khai bo cc bin c trang ASP.NET (Default.aspx.cs)public partial class _Default : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { Page.Response.Write("Page_Load
"); } private void InitializeComponent() { this.PreRenderComplete += new System.EventHandler(this.Page_PreRenderComplete); this.PreLoad += new System.EventHandler(this.Page_PreLoad); this.Unload += new System.EventHandler(this.Page_Unload); this.InitComplete += new System.EventHandler(this.Page_InitComplete); this.Init += new System.EventHandler(this.Page_Init); this.PreRender += new System.EventHandler(this.Page_PreRender); this.Load += new System.EventHandler(this.Page_Load);

Lu hnh ni b

Trang 27

this.PreInit += new System.EventHandler(this.Page_PreInit); this.LoadComplete += new System.EventHandler(this.Page_LoadComplete); } protected void Page_Init(object sender, EventArgs e) { Page.Response.Write("Page_Init
"); } protected void Page_InitComplete(object sender, EventArgs e) { Page.Response.Write("Page_InitComplete
"); } protected void Page_LoadComplete(object sender, EventArgs e) { Page.Response.Write("Page_LoadComplete
"); } protected void Page_PreInit(object sender, EventArgs e) { Page.Response.Write("Page_PreInit
"); } protected void Page_PreLoad(object sender, EventArgs e) { Page.Response.Write("Page_PreLoad
"); } protected void Page_PreRender(object sender, EventArgs e) { Page.Response.Write("Page_PreRender
"); } protected void Page_PreRenderComplete(object sender, EventArgs e) { Page.Response.Write("Page_PreRenderComplete
"); } protected void Page_Unload(object sender, EventArgs e) { } }

Kt qu sau khi thc thi trang trn :

Hnh 2.6 Danh sch cc bin c ca trang ASP.NET 2.3 Gii thiu ASP.NET Server Controls gip cho vic pht trin cc ng dng web nhanh chng v thun tin, ASP.NET cung cp cho chng ta mt tp hp cc iu khin sn c thc hin hu ht cc cng vic ph bin hng ngy. Cc iu khin ny chia lm 2 loi: HTML Server Control v ASP.NET Server Control. HTML Server Control : tin thn l th HTML m ta vn to trong trang HTML, ch khc mt iu l c thm runat = server; trong khai bo th v c thc thi ti Web Server. Cc i tng th HTML server controls khai bo trong namespace System.Web.UI.HtmlControls c ly t lp c s HtmlControl . Th d : Web server controls: nm trong namespace System.Web.UI.WebControls. Cc control ny cng gi l Web Controls. Lu hnh ni b Trang 28

Th d : im khc bit gia HTML Server control v ASP.NET Server control ch: nh x ti th HTML(Mapping to HTML tags): HTML server controls nh x trc tip ti th HTML, n c chuyn i thnh server control bng vic dng thuc tnh runat = server. Web control khng nh x trc tip ti th HTML. Do bn phi s dng thm cc control ca ASP.NET. M hnh hng i tng(Object Model): HTML server control thit lp cc thuc tnh dng cp chui tn/gi tr khng nh kiu mnh. Web control thit lp theo chun thuc tnh (property). Trnh duyt ch (Target browser): HTML server control khng thay i ph thuc vo trnh duyt ch cn m bo control tr v ng vi trnh duyt. Web control tr v u ra t ng iu chnh ph thuc vo trnh duyt ch chc chn control tr v ng vi trnh duyt. 2.4 HTML Server Controls Nh trnh by trn, HTML Server Control bao gm cc th HTML c khai bo thm thuc tnh runat="server"

Hnh 2.7 Cc HTML Server Controls. HTML Server Controls bao gm hai nhm chnh thuc lp HtmlControl l : HTMLInputControl, HTMLContainerControl v ba iu khin ph l HTMLImage, HTMLLink v HTMLTitle theo m hnh cu trc phn cp sau :

Lu hnh ni b

Trang 29

Hnh 2.8 Cu trc lp HTMLControl. Cc thuc tnh chnh trong khai bo cc th HTMLControl trn da theo bng sau :

Hnh 2.9 Cc thuc tnh chnh ca cc HTMLControls. Cc s kin chnh ca cc th HTMLControl chia theo bng sau :

Lu hnh ni b

Trang 30

Hnh 2.10 Cc s kin ca HTMLControl. Kho st chi tt cc HTML Server Controls. 1. HtmlAnchor HtmlAchor control c s dng tng t nh mt th HTML . Trong HTML, th c s dng to mt Hyperlink. Hyperlink ny c th link ti mt bookmark hoc ti mt trang web khc. Cc thuc tnh : Thuc tnh M t Tr v tt c tn thuc tnh v gi tr tng ng ca th. Attributes Gi tr boolean xc nh control khng/c hin th (disabled) trn trang Disabled hay khng. Mc nh l false. a ch URL ca lin kt (link). Href Id duy nht ca control. Id in vo hay tr v ni dung gia th ng v th m, nhng k t c innerHtml bit th khng t ng chuyn thnh cc thc th (entities). in vo hay tr v ni dung gia th ng v th m. Nhng k t c innerText bit t ng chuyn thnh cc thc th (entities). Tn ca th. Name Tn hm c thc thi khi link c click. OnServerClick Xc nh rng control ny l server control. Phi c xc nh l Runat server. Xc nh hay tr v thuc tnh CSS c p dng cho control. Style Tr v tn ca th. TagName Xc nh ca s s c m. Target Ta s c hin th. Title Gi tr boolean xc nh control s c hin th hay khng. Visible Chng ta c trang aspx nh sau: Bo Dn Tr
Bo vnexpress

Lu hnh ni b

Trang 31

Code x l pha server nh sau:public partial class _Default : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { link2.HRef = "http://vnexpress.net"; link2.Target = "_blank"; } }

Chng ta c link1 gn thuc tnh href c gn trc tip trong th cn link2 chng ta gn href khi trang c ti ln m lnh pha server.

2. HtmlButton. HtmlButton c s dng tng ng vi th HTML . Trong HTML, th c s dng to mt nt bm. Cc thuc tnh: Thuc tnh M t Tr v tt c tn thuc tnh v gi tr tng ng ca thuc th . Attributes Gi tr boolean xc nh control khng/c hin th (disabled) trn trang Disabled hay khng. Mc nh l false. Id duy nht ca control. Id in vo hay tr v ni dung gia th ng v th m, nhng k t c innerHtml bit th khng t ng chuyn thnh cc entities. in vo hay tr v ni dung gia th ng v th m. Nhng k t c innerText bit t ng chuyn thnh cc entities. Tn hm c thc thi khi link c click. OnServerClick Xc nh rng control ny l server control. Phi c xc nh l Runat server. Xc nh hay tr v thuc tnh CSS c p dng cho control. Style Tr v tn ca th. TagName Gi tr boolean xc nh control s c hin th hay khng. Visible Chng ta c trang aspx nh sau:

Lu hnh ni b

Trang 32

Blue button! Pink button!

Code x l pha server nh sau:public partial class _Default : System.Web.UI.Page { protected void b1_Click(object sender, EventArgs e) { p1.InnerHtml = "bn click vo button mu xanh!"; } protected void b2_Click(object sender, EventArgs e) { p1.InnerHtml = "bn click vo button mu hng!"; } }

Giao din chng ta c hai button mt button mu xanh v mt button mu hng. Khi chng ta click vo button th hm x l s kin tng ng s gn ni dung vo th p v hin ln giao din nh hnh di y :

Lu hnh ni b

Trang 33

3. HtmlForm HtmlForm control c s dng tng ng th HTML . Trong HTML, th c s dng to mt form. Cc thuc tnh: Thuc tnh M t URL ni m d liu c gi n khi form c submit Action Tr v tt c tn thuc tnh v gi tr tng ng ca thuc th Attributes Gi tr boolean xc nh control c b disabled hay khng. Mc nh l false Disabled Id duy nht ca control Id in vo hay tr v ni dung gia th ng v th m. nhng k t c bit innerHtml th khng t ng chuyn thnh cc entities in vo hay tr v ni dung gia th ng v th m. Nhng k t c bit innerText t ng chuyn thnh cc entities Xc nh cch post d liu ln server. C 2 gi tr l post v get. Mc Method nh l post Tn ca form Name Xc nh rng control ny l server control. Phi c xc nh l server Runat Xc nh hay tr v thuc tnh CSS c p dng cho control Style Tr v tn ca th TagName Ca s load URL Target Gi tr boolean xc nh control s c hin th hay khng. Visible Chng ta c file aspx nh sau: Nhp tn ca bn:

Code x l pha server nh sau: public partial class _Default : System.Web.UI.Page { protected void submit_Click(object sender, EventArgs e) { Lu hnh ni b Trang 34

p1.InnerHtml = "Cho bn " + name.Value + "!"; } } Giao din chng ta c mt textbox v mt button. Khi chng ta click vo button submit th hm x l s kin submit_Click c thc hin v ghi ra trang web: cho bn cng vi tn c nhp vo textbox nh hnh di y:

4. HtmlGeneric. HtmlGeneric control c dng iu khin nhng th HTML khc cha c ch r bi mt HTML server control c bit, nh , , , , Cc thuc tnh Thuc tnh M t Tr v tt c tn thuc tnh v gi tr tng ng ca thuc th Attributes Gi tr boolean xc nh control c b disabled hay khng. Mc nh l false Disabled Id duy nht ca control Id in vo hay tr v ni dung gia th ng v th m. nhng k t c bit innerHtml th khng t ng chuyn thnh cc entities in vo hay tr v ni dung gia th ng v th m. Nhng k t c bit innerText t ng chuyn thnh cc entities Xc nh cch post d liu ln server. C 2 gi tr l post v get. Mc Method nh l post Xc nh rng control ny l server control. Phi c xc nh l server Runat Xc nh hay tr v thuc tnh CSS c p dng cho control Style Tr v tn ca th TagName Gi tr boolean xc nh control s c hin th hay khng. Visible 5. HtmlImage. HtmlImage control c s dng tng ng th . Trong HTML, th c s dng hin th hnh nh. Cc thuc tnh Thuc tnh M t Xc nh v tr ca hnh: Align Top Middle Bottom Lu hnh ni b Trang 35

Left right M t ngn v hnh Alt Tr v tt c tn thuc tnh v gi tr tng ng ca thuc th Attributes dy ca vin xung quanh hnh Border Gi tr boolean xc nh control c b disabled hay khng. Mc nh l false Disabled Chiu cao ca hnh Height Id duy nht ca control Id Xc nh rng control ny l server control. Phi c xc nh l server Runat a ch URL ca hnh c hin th Src Xc nh hay tr v thuc tnh CSS c p dng cho control Style Tr v tn ca th TagName Gi tr boolean xc nh control s c hin th hay khng. Visible Chiu rng ca hnh Width Chng ta c file aspx nh sau: Mt ci Gin d

Code x l pha server nh sau: public partial class _Default : System.Web.UI.Page { protected void choose_image(object sender, EventArgs e) { image1.Src = select1.Value; } } Giao din ca chng ta c mt combobox, mt button. Khi chng ta chn mt la chn khc trn combobox v click v button hin th th hnh nh hin th ln s thay i tng ng nh hnh di y : Lu hnh ni b Trang 36

6. HtmlInputButton. HtmlInputButton control c s dng iu khin cc th , , v . Trong HTML nhng th ny c s dng to mt nt lnh, mt submit button, v mt reset button. Cc thuc tnh: Thuc tnh M tAttributes Disabled Name Runat Style TagName Type Value Visible Tr v tt c tn thuc tnh v gi tr tng ng ca thuc th Gi tr boolean xc nh control c b disabled hay khng. Mc nh l false Tn ca th Xc nh rng control ny l server control. Phi c xc nh l server Xc nh hay tr v thuc tnh CSS c p dng cho control Tr v tn ca th tag Loi th Gi tr ca th Gi tr boolean xc nh control s c hin th hay khng.

Th d phn ny chng ta c th xem li Th d mc HtmlButton. 7. HtmlInputCheckBox. HtmlInputCheckBox control c s dng iu khin th . Trong HTML, th ny c s dng to mt checkbox. Cc thuc tnh v cc s kin: Thuc tnh M tAttributes Checked Disabled Id Name Runat Style TagName Type Value Visible S kin ServerChange Tr v tt c tn thuc tnh v gi tr tng ng ca thuc th Gi tr boolean xc nh th c c chn hay khng. Gi tr boolean xc nh control c b disabled hay khng. Mc nh l false Id duy nht ca control Tn ca th Xc nh rng control ny l server control. Phi c xc nh l server Xc nh hay tr v thuc tnh CSS c p dng cho control Tr v tn ca th Loi th Gi tr ca th Gi tr boolean xc nh control s c hin th hay khng. M t Xy ra khi trng thi ca control thay i

Chng ta c file aspx nh sau: Lu hnh ni b Trang 37

Bn thch nhng mu no?

Xanh dng
Xanh lc

Code x l pha server nh sau:public partial class _Default : System.Web.UI.Page { protected void submit(object sender, EventArgs e) { string sResult =""; if (red.Checked) sResult = ", "; if (green.Checked) sResult = sResult + "xanh lc, "; if (blue.Checked) sResult = sResult + "xanh dng"; p1.InnerHtml = "Bn thch mu: " + sResult; red.Checked = false; green.Checked = false; blue.Checked = false; } }

Giao din ca chng ta c 3 checkbox v mt button. Khi button c click th hm x l s kin button click c thc hin v kim tra checkbox no c chn v hin th ni dung tng ng ln.

8. HtmlInputFile. Lu hnh ni b Trang 38

HtmlInputFile control c s dng iu khin th . Trong HTML, th ny c s dng upload mt file ln server. Cc thuc tnh Thuc tnh M t Danh sch nhng loi MIME c chp nhn Accept Tr v tt c tn thuc tnh v gi tr tng ng ca thuc th Attributes Gi tr boolean xc nh control c b disabled hay khng. Mc nh l false Disabled Id duy nht ca control Id S k t ti a c cho php trong th ny MaxLength Tn ca th Name Xc nh xem c truy xut c ti file c post ln khng PostedFile Xc nh rng control ny l server control. Phi c xc nh l server Runat Chiu rng ca th Size Xc nh hay tr v thuc tnh CSS c p dng cho control Style Tr v tn ca th TagName Loi th Type Gi tr ca th Value Gi tr boolean xc nh control s c hin th hay khng. Visible Chng ta c file aspx nh sau: Chn file upload ln server: Tn file:
ContentLength: bytes

Code x l pha server nh sau:public partial class _Default : System.Web.UI.Page {

Lu hnh ni b

Trang 39

protected void submit(object sender, EventArgs e) { fname.InnerHtml = MyFile.PostedFile.FileName; clength.InnerHtml = MyFile.PostedFile.ContentLength.ToString(); MyFile.PostedFile.SaveAs("c:\\" + MyFile.PostedFile.FileName); } }

Giao din ca chng ta c mt HtmlInputFile control, mt HtmlButton control. Khi chng ta chn file upload ln server v nhn submit th hm x l s kin click ca button s c thc hin v s ly tn v ln ca file hin th ln trang web nh hnh di y

9. HtmlInputHidden. HtmlInputHidden control c s dng iu khin th . Trong HTML, th ny c s dng to mt hidden input field. Cc thuc tnh v s kin : Thuc tnh M t Tr v tt c tn thuc tnh v gi tr tng ng ca thuc th Attributes Gi tr boolean xc nh control c b disabled hay khng. Mc nh l false Disabled Id duy nht ca control Id Tn ca th Name Xc nh xem c truy xut c ti file c post ln khng PostedFile Xc nh rng control ny l server control. Phi c xc nh l server Runat Xc nh hay tr v thuc tnh CSS c p dng cho control Style Tr v tn ca th TagName Loi th Type Gi tr ca th Value Lu hnh ni b Trang 40

Gi tr boolean xc nh control s c hin th hay khng. Visible S kin M t ServerChange Khi ni dung ca th thay i Chng ta c file aspx nh sau: Nhp d liu:

Code pha server nh sau: public partial class _Default : System.Web.UI.Page { protected void submit(object sender, EventArgs e) { hidden1.Value = string1.Value; p1.InnerHtml="Hidden value= " + hidden1.Value; } } Giao din ca chng ta c mt HtmlInputHidden control, mt HtmlInputText control, mt HtmlInputButton. Khi chng ta click vo button submit th hm x l s kin click ca button c thc thi, khi gi tr ca hidden field s c gn bng gi tr ca textbox v sau hin th gi tr ca hidden field trong th p nh hnh sau y :

10. HtmlInputImage.

Lu hnh ni b

Trang 41

HtmlInputImage control c s dng iu khin th . Trong HTML, th ny c s dng to mt input button s dng hnh, thay cho loi button thng thng Cc thuc tnh Thuc tnh M t Cch sp xp ca hnh Align Text thay th hin th cho hnh Alt Tr v tt c tn thuc tnh v gi tr tng ng ca thuc th Attributes dy ca vin xung quanh ca th Border Gi tr boolean xc nh control c b disabled hay khng. Mc nh l false Disabled Id duy nht ca control Id Tn ca th Name OnServerClick Tn ca hm c thc thi khi hnh c click Xc nh rng control ny l server control. Phi c xc nh l server Runat Source ca image Src Xc nh hay tr v thuc tnh CSS c p dng cho control Style Tr v tn ca th TagName Loi th Type Gi tr ca th Value Gi tr boolean xc nh control s c hin th hay khng. Visible Chng ta c file aspx nh sau: Click vo mt hnh: Code pha server nh sau:public partial class _Default : System.Web.UI.Page { protected void button1(object sender, EventArgs e)

Lu hnh ni b

Trang 42

{ p1.InnerHtml = "Hnh mt ci c click"; } protected void button2(object sender, EventArgs e) { p1.InnerHtml = "Hnh mt gin d c click"; } }

Giao din ca chng ta c hai HtmlInputImage control. Khi chng ta click vo mi hnh th hm x l s kin click ca 2 hnh c thc thi v thng ip c hin ln trong th p nh hnh di y.

11. HtmlInputRadioButton. HtmlInputRadioButton c s dng iu khin th . Trong HTML, th ny c s dng to mt radiobutton. Cc thuc tnh. Thuc tnh M t Tr v tt c tn thuc tnh v gi tr tng ng ca thuc th Attributes Gi tr boolean xc nh th c c chn hay khng Checked Gi tr boolean xc nh control c b disabled hay khng. Mc nh l false Disabled Id duy nht ca control Id Tn ca th Name Xc nh rng control ny l server control. Phi c xc nh l server Runat Xc nh hay tr v thuc tnh CSS c p dng cho control Style Tr v tn ca th TagName Loi th Type Gi tr ca th Value Gi tr boolean xc nh control s c hin th hay khng. Visible Chng ta c file aspx nh sau: Lu hnh ni b Trang 43

Chn mu bn a thch:

Xanh lc
Xanh dng
Code pha server nh sau: public partial class _Default : System.Web.UI.Page { protected void submit(object sender, EventArgs e) { string sColor=""; if(r1.Checked) sColor = ""; else if(r2.Checked) sColor = "Xanh lc"; else sColor = "Xanh dng"; p1.InnerHtml = "Bn thch mu: " + sColor; } } Giao din ca chng ta c 3 HtmlInputRadioButton, mt HtmlInputButton. Khi button submit c click th hm x l s kin click ca n c thc thi, nu radiobutton no c chn th mu tng ng s c hin th ln thng qua th p nh hnh di y :

Lu hnh ni b

Trang 44

12. HtmlInputText. HtmlInputText control c s dng iu khin 2 th v . Trong HTML, nhng th c s dng to mt text field v mt password field. Cc thuc tnh. Thuc tnh M t Tr v tt c tn thuc tnh v gi tr tng ng ca thuc th Attributes Gi tr boolean xc nh control c b disabled hay khng. Mc nh l false Disabled Id duy nht ca control Id S k t ti a c cho php ca th ny MaxLength Tn ca th Name Xc nh rng control ny l server control. Phi c xc nh l server Runat Chiu rng ca th Size Xc nh hay tr v thuc tnh CSS c p dng cho control Style Tr v tn ca th TagName Loi th Type Gi tr ca th Value Gi tr boolean xc nh control s c hin th hay khng. Visible Chng ta c th xem Th d mc HtmlButton. 13. HtmlSelect. HtmlSelect control c s dng iu khin th . Trong HTML, th ny c s dng to drop-down list. Cc thuc tnh : Thuc tnh M t Tr v tt c tn thuc tnh v gi tr tng ng ca thuc th Attributes Tn ca bng d liu s dng DataMember Data source s dng DataSource Trng trong data source c hin thi trong drop-down list DataTextField Trng trong data source xc nh gi tr ca mi item trong drop-down DataValueField list. Gi tr boolean xc nh control c b disabled hay khng. Mc nh l Disabled Lu hnh ni b Trang 45

false Id duy nht ca control Id in vo hay tr v ni dung gia th ng v th m. nhng k t c bit innerHtml th khng t ng chuyn thnh cc entities in vo hay tr v ni dung gia th ng v th m. Nhng k t c innerText bit t ng chuyn thnh cc entities Danh sch ca nhng item trong drop-down list. Items Xc nh nhiu item c th c chn ti cng mt thi im Multiple OnServerChange Tn ca hm c thc thi khai item c chn b thay i Xc nh rng control ny l server control. Phi c xc nh l server Runat Index ca item c chn hin ti SelectedIndex Chiu rng ca th Size Xc nh hay tr v thuc tnh CSS c p dng cho control Style Tr v tn ca th TagName Gi tr ca th Value Gi tr boolean xc nh control s c hin th hay khng. Visible Chng ta xem Th d mc HtmlImage. 14. HtmlTable. HtmlTable control c s dng iu khin th . Trong HTML th table c s dng to 1 table. Cc thuc tnh Thuc tnh M t Xc nh cch sp xp ca table Align Tr v tt c tn thuc tnh v gi tr tng ng ca thuc th Attributes Xc nh mu nn ca table BGColor Xc nh dy ca vin Border Xc nh mu ca border BorderColor Xc nh khong cch gia vin ca v ni dng bn trong CellPadding Xc nh khong cch gia cc CellSpacing Gi tr boolean xc nh control c b disabled hay khng. Mc nh l false Disabled Id duy nht ca control Id in vo hay tr v ni dung gia th ng v th m. nhng k t c bit innerHtml th khng t ng chuyn thnh cc entities in vo hay tr v ni dung gia th ng v th m. Nhng k t c bit innerText t ng chuyn thnh cc entities Tr v i tng HtmlRowCollection th hin tt c cc dng trong table Rows Xc nh hay tr v thuc tnh CSS c p dng cho control Style Tr v tn ca th TagName Gi tr boolean xc nh control s c hin th hay khng. Visible Xc nh chiu rng ca table Width Chng ta c trang aspx nh sau: Lu hnh ni b Trang 46

s dng: 1 2 3
s ct: 1 2 3

Code pha server nh sau:public partial class _Default : System.Web.UI.Page { protected void submit(object sender, EventArgs e) { int row,numrows,numcells,j,i; row=0; numrows=int.Parse(rows1.Value); numcells=int.Parse(cells1.Value); for (j = 1; j Trang aspx bn trn hin th lch vi cc ngy trong tun c ghi y , ngi dng c th chn mt ngy, mt tun v mt thng, ngy/tun/thng c chn c hin th vi mu nn l mu xm nh hnh di y :

4. CalendarDay. CalendarDay control th hin mt ngy trong mt calendar control. Cc thuc tnh : Thuc tnh M t Bin ngy ca ngy Date DayNumberText S ngy(th) ca ngy Xc nh ngy trong thng khc c c hin th hay khng IsOtherMonth Xc nh c th chn c ngy IsSelectable Xc nh ngy c c chn hay khng IsSelected Xc nh c phi l ngy hin ti hay khng IsToday Xc nh c phi l th by hay l ch nht hay khng. IsWeekend 5. CheckBox. CheckBox control c s dng hin th mt check box. Cc thuc tnh: Thuc tnh M t Xc nh form c t ng post back v server sau khi thuc tnh AutoPostBack Checked c thay i hay khng. Mc nh l khng Xc nh trang c c kim chng khi button control click hay khng CausesValidation Xc nh check box c chn hay khng. Checked Lu hnh ni b Trang 60

Tn v gi tr thuc tnh c s dng cho Input th cho CheckBox control Tn v gi tr thuc tnh c s dng cho Label th cho CheckBox LabelAttributed control Xc nh control l mt server control. Phi c xc nh l server Runat Text bn cnh CheckBox Text Text s c xut hin bn no check box(tri hay phi) TextAlign Nhm nhng control cho Checkbox control gy ra s kim chng khi ValidationGroup n post back v server OnCheckedChanged Tn ca hm c thc thi khi thuc tnh Checked c thay i Chng ta c file aspx nh sau: Home Phone:
Work Phone: Code pha server nh sau: public partial class _Default : System.Web.UI.Page { protected void Check(object sender, EventArgs e) { if (check1.Checked) work.Text = home.Text; else work.Text = ""; } } Giao din ca chng ta c 2 TextBox control v mt CheckBox contrel. Chng ta to mt hm qun l s kin cho s kin CheckedChanged sao chp ni dung ca textbox cha in thoi bn vo textbox ca in thoi c quan khi checkbox c chn . InputAttributes

Lu hnh ni b

Trang 61

6. CheckBoxList. CheckBoxList control c s dng to mt nhm check box vi nhiu la chn. Mi item c th c chn trong CheckBoxList control c nh ngha bng th ListItem. Cc thuc tnh: Thuc tnh M t Khong cch gia vin v ni dung CellPadding Khong cch gia cc cell CellSpacing S column s dng khi hin th nhm check box RepeatColumns Xc nh nhm check box s c lp li theo chiu ngang hay chiu dc RepeatDirection Layout ca check box group RepeatLayout Xc nh control l mt server control. Phi c xc nh l server Runat Xc nh text xut hin bn no ca check box TextAlign Chng ta c file aspx nh sau: Item 1 Item 2 Item 3 Item 4 Item 5 Item 6
Code pha server nh sau: public partial class _Default : System.Web.UI.Page { Lu hnh ni b Trang 62

protected void Check(object sender, EventArgs e) { int i; mess.Text = "Selected Item(s):"; for (i = 0; i =1 3. In ra cc s c 3 ch s sao cho abc=a^3+b^3+c^3.

4. Tnh Cos(x)=1-x^2/2!+x^4/4!-... vi epsilon=10^-6.

Hng dn: Ni dung trang Default.aspx Untitled Page .style1 { width: 100%; } .style2 { text-align: center; font-weight: bold;

Lu hnh ni b

Trang 88

font-size: x-large; } BI TP S DNG WEB SERVER CONTROLS

Phn m lnh trang Default.aspx.cspublic partial class _Default : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { if (!Page.IsPostBack) { BulletedList1.Items.Add("Nhp x. In ra tr tuyt i x."); BulletedList1.Items.Add("Tnh S=1+2+3+...+n vi n nguyn >=1"); BulletedList1.Items.Add("In ra cc s c 3 ch s sao cho abc=a^3+b^3+c^3."); BulletedList1.Items.Add("Tm Cos(x)=1-x^2/2!+x^4/4!-... vi epsilon=10-6"); } } protected void BulletedList1_Click(object sender, BulletedListEventArgs e) { int item = e.Index; if (item==0) Response.Redirect("TrituyetdoiX.aspx"); else if (item==1) Response.Redirect("TinhS.aspx"); else if (item==2) Response.Redirect("BaChuSo.aspx");

Lu hnh ni b

Trang 89

else Response.Redirect("Cosx.aspx"); } }

- To trang BaChuSo.aspx vi ni dung thit k sau: Untitled Page .style1 { width: 100%; } .style2 { font-size: large; font-weight: bold; text-align: center; } IN CC S C 3 CH S BNG TNG LP PH NG TNG CH S

Lu hnh ni b

Trang 90

Phn m lnh trang BaChuSo.aspx.cs nh sau:public partial class BaChuSo : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { } protected void BtnIn3So_Click(object sender, EventArgs e) { int a, b, c; string kq = "Cac so : "; for (int i = 100; i =esp){ cosx+=p; p*=-Math.Pow(x,2)/((i+1)*(i+2)); i+=2; } cosx+=p; lblKQ.Text="Cos("+txtX.Text+")="+cosx; } catch(Exception ex){ } } }

Lu hnh ni b

Trang 93

Chng 3:

MASTER PAGE WEBSITE NAVIGATION

Cc vn chnh s c cp : Cu trc mt MasterPage Cc dng toMater Page Cch to SiteMap kt hp vi trang Master Cch to Web User Control. Cc i tng Request, Response v Server. Kt thc bi ny cc bn c th : Nm vng cch to Master Page v Web User Control, s dng cc i tng ASP.NET gm Request, Response v Server. 3.1 MATER PAGE Cc trang Master tng t nh cc trang ASP.NET. Ging nh cc trang thng thng, cc trang master l nhng tp tin vn bn c th cha HTML, iu khin web, v m lnh. Tuy nhin, cc trang master c phn m rng tp tin l .master thay v. aspx, v chng khng th c xem trc tip bi mt trnh duyt. Thay vo , cc trang master phi c s dng bi cc trang khc, c bit n nh l ni dung trang. V c bn, trang master xc nh cu trc trang v cc thnh phn chung. Cc trang ni dung thng qua cu trc ny v ch cn in vo n vi ni dung thch hp. Th d, nu mt trang web bn sch c to ra bng cch s dng ASP.NET, mt trang master n c th xc nh b tr cho ton b trang web. Mi trang s s dng trang master ny, v kt qu l, mi trang s c cng mt t chc c bn v tiu tng t (header,footer, v vv..). Tuy nhin, mi trang s cng chn thng tin c th ca n, chng hn nh sch bn chy, sch mi, sch gim gi, hoc kt qu tm kim, vo trong mu ny. 3.1.1 To Master Page n gin to mt Master Page trong mt ng dng web c sn, bn chn R-Click ti ng dng web trong ca s Solution Explorer v chn Add New Item.., xut hin hp thoi , bn chn Master Page nh trong hnh 3.1

Hnh 3.1 Hp thoi to Master Page Nhp tn master page vo trong khung Name : DefaultContent.master v nhp nt Add, trang DefaultContent.master s c thm vo trong ng dng, v ni dung sau : Lu hnh ni b Trang 94

Untitled Page Bn dng u tin ca trang s bt u bng ch dn Master : Chuyn qua ch hin th l Design , trn trang master va to c sn hai thnh phn l ContentPlaceHolder :

Hnh 3.2 Trang DefaultContent.master va dc thm vo ng dng ContentPlaceHolder th nht c a vo trong th Head, mang n cho cc trang ni dung cc trang thm siu d liu (meta data), chng hn nh cc t kha tm kim v lin kt trang tnh (search keywords and style sheet links) Lu hnh ni b Trang 95

Untitled Page ContentPlaceHolder th hai c a vo trong th Body, i din cc ni dung hin th ca trang. N xut hin trn cc trang nh l mt khung rng ch sn ni dung s c in vo t trang . Nu bn nhpvo bn trong hoc di chut qua n, tn ca ContentPlaceHolder xut hin trong mt tooltip, nh trong hnh 3.3. Phn kch thc ca khung s m rng ph hp vi ni dung bn t bn trong.

Hnh 3.3 Trang DefaultContent.master cha ContentPlaceHolder bn trong th Body. Bn thay i ni dung trang DefaultContent.master nh sau : Untitled Page
This is default content.
This is a simple footer. Lu hnh ni b Trang 96

Chuyn qua ch hin th l Design , trn trang master va thay i c ni dung sau :

Hnh 3.4 Trang DefaultContent.master sau khi cp nht ni dung. To trang DefaultContentPage.aspx s dng trang master l DefaultContent.master.

Chnh sa ni dung trang DefaultContentPage.aspx ch cn mt dng m lnh nh sau , ch thuc tnh MasterPageFile trong th ch dn Page: Kt qu hin th khi chuyn sang ch Design , ni dung ca trang ging nh ni dung trang master c khai bo trong n.

Hnh 3.5 Trang DefaultContentPage.aspx sau khi cp nht ni dung. - a ni dung vo trong khung ContentPlaceHolder : To thm mt trang master cho ng dng l SiteTemplate.master c ni dung sau : Lu hnh ni b Trang 97

Untitled Page
This is a simple footer. V to trang SimpleContentPage.aspx c MasterPageFile="~/SiteTemplate.master" , trong trang ny c a ni dung vo trong ContentPlaceHolder qua th asp:Content nh sau :
Here's some new content!
Kt qu hin th ch Design , ni dung ca trang SimpleContentPage.aspx nh sau :

Hnh 3.6 Trang SimpleContentPage.aspx c ni dung hin th trong ContentPlaceHolder. Bn thy ni dung :
Here's some new content!
c hin th trong khung ContentPlaceHolderID="ContentPlaceHolder1" khai bo trong trang SiteTemplate.master 3.1.2 To trang Mater Page c nhiu khu vc cha ni dung Trang Master khng gii hn ch c mt ContentPlaceHolder. Tt c bn cn lm l thm nhiu iu khin ContentPlaceHolder v sp xp chng mt cch thch hp trn trang Master ny. Lu hnh ni b Trang 98

To thm mt trang master vo ng dng c tn MultipleContent.master vi ni dung sau : Untitled Page

OTHER LINKS
This is a simple footer. Kt qu hin th khi chuyn sang ch Design , ni dung ca trang MultipleContent.master nh sau :

Hnh 3.7 Trang MultipleContent.master c hai khung ContentPlaceHolder. Trang master ny c cha hai ContentPlaceHolder trong th Body l : Lu hnh ni b Trang 99

v Sau , bn to trang MultipleContentPage.aspx s dng trang MultipleContent.master trn vi ni dung sau : This is the generic content for this page. Here you might provide some site specific text. This is the generic content for this page. Here you might provide some site specific text. This is the generic content for this page. Here you might provide some site specific text. This is the generic content for this page. Here you might provide some site specific text.

This is the generic content for this page. Here you might provide some site specific text. This is the generic content for this page. Here you might provide some site specific text.This is the generic content for this page. Here you might provide some site specific text. Here's a link.
Here's a link.
Here's a link.
Here's a link.

Kt qu hin th khi chuyn sang ch Design , ni dung ca trang MultipleContentPage.aspx nh sau :

Hnh 3.8 Trang MultipleContentPage.aspx c ni dung a vo cho hai khung ContentPlaceHolder. 3.1.3 To trang Master Page vi cu trc bng Phn ny hng dn cc bn to mt trang Master theo thit k bng (Table-Based Layouts). Chng ta thit k cc trang ASP.NET theo cng mt mu trang master c dng nh hnh sau : Lu hnh ni b Trang 100

Hnh 3.9 Trang Master thit k theo table layout. To trang master c tn TableMaster.master c ni dung sau : Untitled Page
Lu hnh ni b Trang 101

My Footer Kt qu hin th khi chuyn sang ch Design , thit k ca trang TableMaster.master nh sau :

Hnh 3.10 Trang TableMaster thit k theo table layout. Khai bo mt property ShowNavigationControls trong trang TableMaster.master.cs bt hoc tt iu khin Treeview trn trang master.public partial class TableMaster : System.Web.UI.MasterPage { protected void Page_Load(object sender, EventArgs e) { } public bool ShowNavigationControls { set { Treeview1.Visible = value; } get { return Treeview1.Visible; } } }

Sau , bn to trang TableContentPage.aspx s dng trang TableMaster.master trn vi ni dung sau :

Lu hnh ni b

Trang 102

Your content goes in this cell.

Kt qu hin th khi chuyn sang ch Design , ni dung ca trang TableContentPage.aspx nh sau :

Vit phn m lnh thc thi trong trang TableContentPage.aspx.cs :public partial class TableContentPage : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { } // Khi click nt Hide , che iu khin Treeview trn trang master protected void cmdHide_Click(object sender, EventArgs e) { TableMaster master = (TableMaster)this.Master; master.ShowNavigationControls = false; } // Khi click nt Show, hin th iu khin Treeview trn trang master protected void cmdShow_Click(object sender, EventArgs e) { TableMaster master = (TableMaster)this.Master; master.ShowNavigationControls = true; } }

Thc thi trang TableContentPage.aspx, ta c kt qu :

Hnh 3.11 Thc thi trang TableContentPage (click nt Show).

Lu hnh ni b

Trang 103

Hnh 3.11 Thc thi trang TableContentPage (click nt Hide). 3.2 WEBSITE NAVIGATION Bn hc c cch n gin cho mt ngi truy cp trang web t trang ny sang trang khc. Th d, bn c th thm cc lin kt HTML (hoc iu khin HyperLink) trong trang ca bn cho php ngi dng lt web thng qua trang web ca bn. Nu bn mun thc hin chuyn hng trang, bn c th gi Response.Redirect() hoc Server.Transfer() trong trang m lnh ca bn. Nhng trong ng dng web chuyn nghip, cc yu cu chuyn hng chuyn su hn. Cc ng dng ny cn mt h thng cho php ngi dng lt web thng qua mt h thng cc trang, m khng buc bn vit on code chuyn hng cng bun t trong mi trang. ASP.NET cung cp mt m hnh chuyn hng d dng cho php ngi dng lt web thng qua cc ng dng web ca bn. Trc khi bn c th s dng m hnh ny, bn cn phi xc nh h thng cp bc ca trang web ca bn, ni cch khc, lm th no cc trang c t chc thnh cc nhm mt cch logic. Bn sau xc nh rng cu trc trong mt tp tin chuyn dng v kt ni thng tin chuyn hng vi cc iu khin menu bao gm TreeView v Menu.

Hnh 3.12 ASP.NET navigation vi SiteMap. 3.2.1 Site Maps Thc hin vic to mt Website SimpleSiteMap: Lu hnh ni b Trang 104

Trong to trang Web.sitemap, bn R-Click ti tn Project trong ca s Solution Explorer, Click mc Add New Item.., xut hin hp thoi Add New Item, chn mc Site Map trong hnh v click nt Add :

Hnh 3.13 To trang Web.sitemap vi mc chn SiteMap. Ni dung trang Web.sitemap ban u nh sau : Cc nguyn tc to trang SiteMap: - Nguyn tc 1 : Mt trang SiteMap bt u bng th . - Nguyn tc 2 : Mi trang web trong SiteMap c khai bo trong th Nguyn tc 3 : Mt siteMapNode c th cha cc siteMapNode khc.

-

- Nguyn tc 4 : Lp li a ch URL trong cc siteMapNode l khng cho php. Lu hnh ni b Trang 105

Cc bn thit k trang sitemap vi ni dung sau : To tip trang MasterPage.master c ni dung sau : Navigation Test Root Lu hnh ni b Trang 106



Phn thit k trang MasterPage nh sau : iu khin SitemapDataSource :

iu khin SiteMapPath : Root

Lu hnh ni b

Trang 107

Chn mc Auto Format.., chn mt la chn scheme thch hp trong danh sch v click OK.

Hnh 3.14 Thay i nh dng ca SiteMappath. Sau , bn chn mc Edit Templates thit k ni dung cho SiteMapPath : c 4 thnh phn th bn trong gm RootNodeTemplate, NodeTemplate, CurrentNodeTemplate, v PathSeparatorTemplate. Nhp ni dung th Current NodeTemplate hin th ni dung th title v th description. Trong l mt cch vit theo dng kt ni d liu n gin (simple data binding) s c hc trong bi hc sau, dng ly ni dung title.

Nhp ni dung th RootNodeTemplate : Hin th ch Root in m Root

Lu hnh ni b

Trang 108

Kt qu: khi chn mc Investing , ni dung SiteMappath hin ra nh sau :

Hnh 3.15 Ni dung SiteMapPath hin th theo Web.sitemap. iu khin TreeView :

u tin chn thuc tnh DataSource ca TreeView ch n SiteMapDataSource1 , sau click vo mc Refresh Schema , ni dung TreeView s c cp nht theo SiteMapDataSource1. Click vo mc Auto Format.. nh dng hin th cho TreeView, click nt Apply xc nhn vic thay i dng hin th :

Hnh 3.16 nh dng hin th cho TreeView. Ni dng TreeView sau khi cu hnh : Lu hnh ni b Trang 109

To mt trang StyleSheet.css nh dng hin th cho cc th HTML :body { font-family: Verdana; font-size: 83%;} div.Box { padding: 5px; border-width: 2px; border-style: ridge; background-color: Lime; }

Cc trang thnh phn trong Web.sitemap, ch thit k vi ni dung n gin minh ho cho bi tp v s c gi khi c la chn trn TreeView theo s iu hng ca Web.sitemap Trang financial.aspx Investing

Kt qu chn Investing trn TreeView s gi trang financial.aspx :

Hnh 3.17 Chn mc Investing trn TreeView. Tng t vi th d trn c s dng Menu trn MasterPage c iu hng theo Web.sitemap Lu hnh ni b Trang 110

Hnh 3.18 Menu s dng theo iu hng ca Web.sitemap. Chn Auto Format.. nh dng hin th cho Menu, click nt OK xc nhn vic thay i.

Hnh 3.19 nh dng hin th cho Menu. Trang MasterPage.master c cha th c thit k theo hnh di y :

Hnh 3.20 Menu theo iu hng ca Web.sitemap. Ni dung trang MasterPage.master nh sau: Navigation Test Lu hnh ni b Trang 111



Phn m lnh ca trang MasterPage.master cung cp phng thc GetDescriptionFromTitle(string Title) hin thng tin th chn trn menu. public partial class MasterPage : System.Web.UI.MasterPage { protected void Page_Load(object sender, EventArgs e) { Lu hnh ni b Trang 112

} protected string GetDescriptionFromTitle(string title) { // This assumes there's only one node with this title. SiteMapNode startingNode = SiteMap.RootNode; SiteMapNode matchNode = SearchNodes(startingNode, title); if (matchNode == null) { return null; } else { return matchNode.Description; } } private SiteMapNode SearchNodes(SiteMapNode node, string title) { if (node.Title == title) { return node; } else { // Perform recursive search. foreach (SiteMapNode child in node.ChildNodes) { SiteMapNode matchNode = SearchNodes(child, title); // Was a match found? // If so, return it. if (matchNode != null) return matchNode; } // All the nodes were examined, but no match was found. return null; } } } 3.3 WEB USER CONTROLS 3.3.1 Gii thiu User Custom Control MS Visual Studio .NET cung cp rt nhiu cc iu khin pht trin ng dng gi l iu khin ni ti (Instrict control). Ngoi ra, n cn cung cp cho chng ta kh nng t xy dng cc iu khin ty bin, nu cc iu khin hin hnh khng p ng c yu cu thit k trang web vi nhng chc nng ring bit. Th d: Nu ng dng ca bn cn chic my tnh (Calculator) rt nhiu trang th gii php tt nht l nn to mt iu khin Calculator ring thay vic kt hp cc iu khin truyn thng, khi ta c th s dng iu khin ny trong ton b ng dng. mc ny s hng dn cch to v s dng iu khin do ngi dng t xy dng Lu hnh ni b Trang 113

hay cn gi l iu khin ty bin (Web User Controls). Thc cht ca User Control (UC) chnh l mt "trang con", trong c th cha bt k ni dung no (tr cc th ,, v mt trang ch c duy nht mt ln xut hin cc th ny) . "Trang con" ny sau c th c khai bo vo cc trang khc s dng. Khi mun cp nht ni dung tt c cc trang, ta ch vic sa i duy nht UC ban u. Kh nng ny ca ASP.NET gip chng ta xy dng ng dng nhanh hn, d bo tr hn. Mi mt UC c t trong mt trang c phn m rng l *.ascx. File ny c c im l khng truy cp trc tip t trnh duyt m ch c chn vo cc trang aspx. Ni dung trang User Control c khai bo vi th nh sau : Phn m lnh trang WebUserControl.aspx.cs: using System.Data; using System.Configuration; using System.Collections; using System.Web; using System.Web.Security; using System.Web.UI; using System.Web.UI.WebControls; using System.Web.UI.WebControls.WebParts; using System.Web.UI.HtmlControls; public partial class WebUserControl: System.Web.UI.UserControl { } Cc lp User Control k tha t System.Web.UI.UserControl, hnh 3.21 cho thy s tha k ca hai i tng Page (trang .aspx) v User Control (trang .ascx).

Hnh 3.21 Cy tha k ca hai i tng Page v User Control. Lu hnh ni b Trang 114

3.3.2 Cc bc to User Custom control Gm 3 bc sau : Bc 1: R-Click ti ng dng web trong ca s Solution Explorer v chn Add New Item.., xut hin hp thoi , bn chn Web User Control, nhp tn User Control vo khung Name, th d tn CalculatorControl.ascx , click nt Add, trang User Control s c thm vo ng dng.

Hnh 3.22 Menu theo iu hng ca Web.sitemap. Bc 2: Son ni dung ca trang. Bc 3: Lu li ni dung ca trang. 3.3.3 Cc loi User Control : C hai loi User Control: User Control hot ng c lp v tch hp. User Control c lp (Independent User Control) l loi iu khin khng tng tc vi phn cn li ca cc m lnh trn trang web v ngc li nu c s tng tc s la User Control tch hp (Integrated User Control). Th d 1: To User Control c lp n gin. To mt trang Footer. ascx vi ni dung hin th sau :

Bc 1: To trang Footer.ascx , v thit k ni dung trang nh sau Lu hnh ni b Trang 115

TRUNG TM O TO MNG MY TNH NHT NGH
a ch: 105 B Huyn Thanh Quan, Qun 3, TP. HCM
in thoi: (08) 3 9322 735 - (08) 3 9322734
Email: [email protected]
Website: http://www.nhatnghe.com iu khin nhn lblFooter s hin th ni dung ngy hoc gi khi trang web c s dng User Control Footer trn c triu gi. Thit k ni dung m lnh cho trang nh sau: public partial class Footer : System.Web.UI.UserControl { protected void Page_Load(object sender, EventArgs e) { lblFooter.Text= "
Trang ny c triu gi lc "; if (format == FooterFormat.LongDate) { lblFooter.Text += DateTime.Now.ToLongDateString(); } else if (format == FooterFormat.ShortTime) { lblFooter.Text += DateTime.Now.ToShortTimeString(); } } public enum FooterFormat { LongDate, ShortTime } private FooterFormat format = FooterFormat.LongDate; public FooterFormat Format { get { return format; } set { format = value; } } } To trang FooterHost.aspx c s dng User Control- Footer trn bng cch khai bo th c dng sau :

Lu hnh ni b

Trang 116

Footer Host A Page With a Configurable Footer






Kt qu thc thi :

Th d 2: To User Control tch hp To mt User Control vi tn LinkMenu.ascx c ni dung thit k nh sau : Lu hnh ni b Trang 117

Products: Books
Toys
Sports
Furniture

Khi click ti LinkButton Books c khai bo cc thuc tnh ca iu khin lnkBooks vi OnCommand="lnk_Command" v CommandArgument="Menu2Host.aspx?product=Books" cho php chuyn n trang Menu2Host.aspx vi chui (query string) ni dung l product=Books tng t lnh Response.Redirect(). Products: Books
Ni dung trang m lnh c khai bo phng thc lnk_Command(object sender, CommandEventArgs e) c cu trc khai bo ging nh khai bo hnh thc ca mt hm u thc (delegate) : public delegate void LinkClickedEventHandler(object sender, LinkClickedEventArgs e); Lu hnh ni b Trang 118

p ng s kin LinkClicked xy ra khi click trn mt LinkButton no trn trang: public event LinkClickedEventHandler LinkClicked; Nh vy, User Control LinkMenu2 gn vo mt s kin LinkClicked, v khi s kin c xy ra trn LinkButton th hm u thc ch nh thc thi s c triu gi : Books Ni dung phn m lnh trang LinkMenu2.ascx.cs nh sau:public partial class LinkMenu2 : System.Web.UI.UserControl { public event LinkClickedEventHandler LinkClicked; protected void lnk_Command(object sender, CommandEventArgs e) { // One of the LinkButton controls has been clicked. // Raise an event to the page. if (LinkClicked != null) { // Pass along the link information. LinkClickedEventArgs args = new LinkClickedEventArgs((string)e.CommandArgument); LinkClicked(this, args); // Perform the redirect. if (!args.Cancel) { // Notice we use the Url from the LinkClickedEventArgs // object, not the original link. That means the web page // can change the link if desired before the redirect. Response.Redirect(args.Url); } } } }

Ni dung trang xy dng lp s kin LinkClickedEventArgs, cha mt property Url trong khai bo constructor ca lp.public class LinkClickedEventArgs : EventArgs { private string url; public string Url { get { return url; } set { url = value; } } private bool cancel = false; public bool Cancel { get { return cancel; }

Lu hnh ni b

Trang 119

set { cancel = value; } } public LinkClickedEventArgs(string url) { Url = url; } } public delegate void LinkClickedEventHandler(object sender, LinkClickedEventArgs e);

To trang Menu2Host.aspx c s dng User Control LinkMenu2 va thit k trn:

Ni dung trang nh sau: Menu Host

Lu hnh ni b

Trang 120

Ni dung trang m lnh Menu2Host.aspx.cs c vit hm u thc LinkClicked(object sender, LinkClickedEventArgs e) c gi khi s kin LinkClicked xy ra trn uc:LinkMenu2:public partial class Menu2Host : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { if (!Page.IsPostBack) { if (Request.Params["product"] != null) { lblSelection.Text = "You chose: "; lblSelection.Text += Request.Params["product"]; } } } protected void LinkClicked(object sender, LinkClickedEventArgs e) { if (e.Url == "Menu2Host.aspx?product=Furniture") { lblClick.Text = "This link is not allowed."; e.Cancel = true; } else { // Allow the redirect, and don't make any changes to the URL. } } }

Kt qu thc thi:

Lu hnh ni b

Trang 121

Khi click ln LinkButton Furniture , thng bo s hin ra tng ng ni dung trong hm u thc, lc ny khng c thc hin vic chuyn trang.if (e.Url == "Menu2Host.aspx?product=Furniture") { lblClick.Text = "This link is not allowed."; e.Cancel = true; }

Kt qu:

3.4 CC I TNG REQUEST, RESPONSE V SERVER thc hin vic giao tip (truyn d liu) gia cc webform ASP.NET cung cp mt tp cc iu khin gip ta lm vic mt cch d dng, l: i tng Request v i tng Response. Trong phn ny, chng ta cng tm hiu thm mt i tng khc cng rt hay dng khi xy dng ng dng l i tng Server.Http RequestResource

Web Server

Http Response

Web Client (Browse)

Hnh 3.23: Qu trnh Request Response ca HTTP i tng Request i tng Request c dng nhn nhng thng tin t trnh duyt ca ngi dng gi v cho Web Server. Nhng thng tin ny gm cc thng s ca Form khi c Submit dng phng thc POST hoc GET hay cc tham s c ghi cng vi trang ASP.NET trong li gi n trang . Lu hnh ni b Trang 122

Dng i tng Request c th chia s thng tin qua li gia cc trang ASP.NET trong mt ng dng v ly gi tr cc Cookie lu tr trn my Client. Bng thuc tnh v phng thc ca Request Phng thc / Din gii thuc tnh Tr v mng chui ca MIME c h tr bng trnh AccepTypes khch Tr v ng dn o ca ng dng ApplicationPath Tr v mng Byte cha ng thng tin nh phn gi n BinayRead Server Tr v i tng HttpBrowserCapabilities trnh by Browser thng tin ca trnh duyt ClientCertificate Tr v i tng HttpClientCertificate ContentEncoding Tp k t ca thc th Body Chiu di tnh bng byte ca yu cu ContentLength Loi MILE ca yu cu ContentType Tr v i tng HttpCookiesCollection Cookies Tr v ng dn o ca yu cu Filepath Tr v HttpFileCollection ca tp nhiu tp tin c ti Files ln Server Tr v tp d liu ca ni dung t Form Form Tr v tp d liu ca ni dung t HTTP Header Header Tr v phng thc HTTP s dng cho yu cu HttpMethod L lung d liu cha ng cc Input ca Form InputStream Ly gi tr ca phng thc trong Form, QueryString Params ng dn o ca yu cu Path ng dn o ca yu cu PathInfo ng dn vt l ca yu cu PhysicalPath Tr v mt tp d liu ca ni dung t QueryString QueryString URL ca yu cu RawURL Phng thc HTTP s dng cho Resquest RequestType Dung lng ca Stream trong lung d liu TotalByte i tng URL cha ng chi tit ca yu cu URL Tn DNS ca ngi s dng UserHostName Chuyn i ng dn o thnh ng dn vt l MapPath Lu yu cu HTTP vo a SaveAs C 2 cch gi thng tin c bit t trnh duyt n Web server, l thng tin t phn trong trang c a vo HTTP header hay c a trc tip vo chui truy vn trong a ch lin kt URL. chnh l vai tr ca 2 tp hp QueryString v Form ca i tng Request. Tp hp QueryString: ly c gi tr t chui truy vn ta dng: Request.QueryString (tn bin). Khi thuc tnh ca phi c dung l METHOD = GET Tp hp Form: ly c gi tr t t phn Header ca HTTP ta dng: Lu hnh ni b Trang 123

Request.QueryString (tn bin). Khi thuc tnh ca phi c dung l METHOD = POST So snh gia hai tp hp Form v QueryString: Theo phng php dng QueryString c hn ch l gii hn chiu di ca chui a ch URL (khong 1000 k t) y chnh l yu cu ca giao thc HTTP. Do s rt phin phc khi c yu cu gi i qu di. Mc khc, gi tr m ta gi i c hin th r rng trong a ch URL trn trnh duyt my Client nn d dng b ngi khc c c. Phng php dng POST khc phc c nhc im trn bng cch a d liu vo trong phn Header ca HTTP. i tng Response Trong h thng cc i tng xy dng sn ca ASP.NET th i tng Response ng vai tr rt quan trng. Khi m i tng Request bao gm nhng thng tin gi n Web server t trnh duyt th i tng Response nm gi nhng g m Web server phi gi tr li cho trnh duyt. Tm li, ta dng i tng Response gi thng tin ra User, gm c ghi thng tin trc tip ra Browser, chuyn Browser n a ch URL khc hay thit lp cc Cookie trn my Client. Bng cc thuc tnh v phng thc ca i tng Response Thuc tnh / phng thc BufferOutput Cache CacheControl ContentEncoding Cookies Expries ExpriesAbsolute Filter Output OutputStream Status StatusCode StatusDescription ClearContent ClearHeaders Close Redirect Writeln Write Lu hnh ni b Din gii C s dng hay khng b nh m cho kt xut d liu Tr v i tng HttpCachePolicy cha ng thng tin v quy nh Cache ca phc p hin hnh Mc d cn h tr nhng phng thc ny cn i nghch trong phng thc ca HttpCachePolicy Tp nhn dng kt xut, l mt trong cc gi tr nh UnicodeEncoding, UTF7Encoding, UTF8Encoding Tr v mt tp ca i tng HttpCookies Mc d cn h tr nhng phng thc ny cn i nghch trong phng thc ca HttpCachePolicy Mc d cn h tr nhng phng thc ny cn i nghch trong phng thc ca HttpCachePolicy i tng Stream dng lm b lc d liu kt xut Tr v i tng TextWriter i tng Stream dng trnh by hng d liu ca body Gn trng thi HTTP tr v cho trnh khch Trng thi HTTP Response Gn din gii trng thi HTTP v tr v cho trnh khch, thuc tnh ny c u tin hn thuc tnh Status Xa ni dung t Buffer Stream Xa header t Buffer Stream ng kt ni vi Client Chuyn hng n a ch file trong cng ng dng hay URL khc trong lc thi hnh Ghi mt lung d liu ra tp tin ch nh Ghi thng tin t cc kiu d liu nh Char, Object, String, Trang 124

Array ra trang web Th d : Minh ha s dng i tng Request v Response Bc 1 :To 2 trang ASP.NET gm trang NhapTen.aspx v trang XemChiTiet.aspx. Bng m t cc thuc tnh ca cc controls trang NhapTen.aspx. Control Lable Lable TextBox TextBox Button Tn thuc tnh Text Text ID ID Text ID Gi tr thuc tnh Nhp tn Ngy Sinh txtTen txtNgaySinh Xem chi tit btnXemChiTiet

Bng m t cc thuc tnh ca cc controls trang XemChiTiet.aspx. Control Lable Tn thuc tnh ID Gi tr thuc tnh lblXemChiTiet

Bc 2 : Vit lnh x l cho cc trang nh sau :public partial class NhapTen : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { } protected void btnXemChiTiet_Click(object sender, EventArgs e) { //Ly cc gi tr nhp vo cc TextBox string strHoTen = txtTen.Text; string strNgaySinh = txtNgaySinh.Text; //Chuyn quan trang XemChiTiet.aspx Response.Redirect("XemChiTiet.aspx?Ten="+strHoTen+"&NgaySinh="+strNgaySinh ); } }

Minh ha phn m ca trang NhapTen.aspxpublic partial class XemChiTiet : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { //Ly cc gi tr t trang NhapTen.aspx string strHoTen = Request.QueryString["Ten"]; string strNgaySinh = Request.QueryString["NgaySinh"]; lblXemChiTiet.Text = "Xin cho bn :"+strHoTen+"
"+ "Ngy sinh ca bn l :"+strNgaySinh; } }

Minh ha phn m ca trang XemChiTiet.aspx

Lu hnh ni b

Trang 125

Bc 3: Nhn Ctrl+F5 thi hnh ng dng. Nhp tn v ngy sinh v nhn nt Xem chi tit Kt qa nh hnh 6.2 v 6.3 .

Hnh 3.24: Khi thi hnh trang XemChiTiet.aspx

Hnh 3.25: Khi thi hnh trang XemChiTiet.aspx V d: To trang LayThongTinTrinhDuyet.aspx hin th cc thng tin cc trnh duyt ca ngi dng. Vit lnh x l nh sau : public partial class LayThongTinTrinhDuyet : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { Response.Write("Browser:" + Request.Browser.Browser+"
"); Response.Write("Version:" + Request.Browser.Version + "
"); Response.Write("Platform:" + Request.Browser.Platform + "
"); Response.Write("JavaScript:" + Request.Browser.JavaScript); } } Lu hnh ni b Trang 126

Hnh 3.26: Kt qu thi hnh trang LayThongTinTrinhDuyet.aspx i tng Server i tng Server c s dng cung cp thng tin ca Server cho ng dng. Thuc tnh MachineName Thuc tnh ny c dng ly tn ca Web Server. Phng thc MapPath Phng thc Mappath c dng ly ng dn vt l hoc ng dn o n mt th mc trn Server. Phng thc Transfer() Ngng thi hnh trang hin hnh, gi yu cu mi n trang c gi thc hin. Th d : To trang LietKeCacBienServer , ly danh sch cc bin serverpublic partial class LietKeCacBienServer : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { int i, j; NameValueCollection coll = Request.ServerVariables; String[] arr1 = coll.AllKeys; for (i = 0; i < arr1.Length; i++) { Response.Write("Key: " + arr1[i] + "
"); String[] arr2 = coll.GetValues(arr1[i]); for (j = 0; j < arr2.Length; j++) { Response.Write("Value " + j + ": " + Server.HtmlEncode(arr2[j]) + "
"); } } } }

Lu hnh ni b

Trang 127

Th d : Minh ha upload tp tin v Sever Ni dung trang GuiTapTin.aspx, cho php gi mt tp tin t Client n Server.

Phn m lnh:

Lu hnh ni b

Trang 128

public partial class GuiTapTin : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { } protected void btnGui_Click(object sender, EventArgs e) { //Kim tra c tp tin no c chn ? if (fuDuLieu.HasFile) { //thit lp ng dn cho tp tin string filename = "~/DuLieu/" + fuDuLieu.FileName; //Ly ng dn vt l cho tp tin trn ng dng string s = Server.MapPath(filename); //Lu tp tin v th mc DuLieu ca ng dng fuDuLieu.SaveAs(s); Response.Write("Tp tin :"+fuDuLieu.FileName+" gi thnh cng ."); } } }

Kt qu thc thi :

Lu hnh ni b

Trang 129

Bc 5 : Kim tra kt qu . Nhp vo biu tng Show All Files trn ca s Solution , sau nhp biu tng Refresh thy kt qu nh hnh bn hoc cc bn c th kim tra bng cch m th mc DuLieu trn a xem kt qu .

Lu hnh ni b

Trang 130

BI THC HNH CHNG 3: Bi 1: Thc hin li cc bi tp th d trong chng 3. Bi 2: To mt Web User Control Login nh sau:

M lnh trang Login.ascx .style1 { width: 174px; } .style2 { width: 48%; } ng nhp User name: Password:

Lu hnh ni b

Trang 131

Sau , thm vo trong phn m lnhpublic partial class Login : System.Web.UI.UserControl { private string dorong; public string DoRong { set { dorong = value; NoiDungLogin.Width = dorong; } get { return dorong; } } public Boolean CheckAccount() { return (txtUserID.Text == "asp.net" && txtPassword.Text == "123456"); } // Ly User name trong User name public string GetUserName() { return txtUserID.Text; } // ly Password trong Password public string GetPassword() { return txtPassword.Text; } protected void Page_Load(object sender, EventArgs e) { } }

To trang LoginDemo.aspx, s dng Web User Control Login trn Untitled Page

Lu hnh ni b

Trang 132

Phn m lnh thc thi trang LoginDemo.aspx.cspublic partial class LoginDemo : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { if (this.IsPostBack == true) ///Nu khng phi ln u np trang { lblThongBao.Text = "Bn nhp User name=" + Login1.GetUserName() + " Mt khu : " + Login1.GetPassword(); } } }

Thc thi ng dng ta c kt qu:

Bi 3: To phn Menu nh sau :

Bi 4: To phn Header v Footer c th chn vo cc trang. Giao din nh sau:

Ni dung ca iu khin Header.ascx

Lu hnh ni b

Trang 133

Ni dung ca iu khin Footer.ascx Bi 5: Thit k trang MasterPage c s dng cc Web User Controls trn tao trang.

Bi 6: To mt ng dng ASP.NET thc hnh vi i tng Request v Response. To trang RequestFormGetPage.aspx Untitled Page

Lu hnh ni b

Trang 134

Phn giao din thit k trang RequestFormGetPage.aspx

Phn m lnh thc thi trang RequestFormGetPage.aspx.cspublic partial class RequestFormGetPage : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { } protected void Submit1_ServerClick(object sender, EventArgs e)

Lu hnh ni b

Trang 135

{ Response.Write("Email: " + Request.Form.Get("Email")); Response.Write("
Password: " + Request.Form.Get("Password")); Response.Write("
Address: " + Request.Form.Get("Address")); } protected void Button1_Click(object sender, EventArgs e) { Response.Write("Email: " +Email.Value ); Response.Write("
Password: " +Password.Value ); Response.Write("
Addres: " + Address.Value ); } }

Kt qu thc thi: Nhp d liu v click nt [Get Method]

Nhp d liu v click nt [Value Property]. Cho bit kt qu hin th.

Lu hnh ni b

Trang 136

Chng 4 :

QUN L TRNG THI

Cc vn chnh s c cp : Qun l trng thi ViewSate Chuyn thng tin gia cc trang. Cc i tng ca ASP.NET gm Cookies, Session v Application. Kt thc bi ny cc bn c th : Vn dng cc k thut trn qun l trng thi thng tin gia cc trang ASP.NET. M t c cc thuc tnh v phng thc ca cc i tng Session, Request Response, Server, Cookie v Application Trnh by v s dng c cc s kin trong tp tin Global.asax M t v s dng c cc thnh phn c bn trong tp tin Web.config S khc bit ng k nht gia lp trnh web form v lp trnh winform l qun l trng thi (state management) , lm th no bn lu tr thng tin qua cc vng i ca ng dng ca bn. Thng tin ny c th n gin nh tn ca ngi dng, hoc phc tp nh mt gi hng trong mt website thng mi in t. Trong mt ng dng Windows truyn thng, t cn phi suy ngh v qun l trng thi v do lun sn c b nh di do v bn ch cn phi quan tm v mt ngi dng duy nht. Trong mt ng dng web, l mt vn khc. Hng ngn ngi s dng c th ng thi chy cng mt ng dng trn cng mt my tnh (my ch web), mi mt giao tip vi HTTP khng lu trng thi (stateless protocol). Cc iu kin ny lm cho n khng th thit k mt ng dng web nh mt ng dng Windows truyn thng. S hiu bit v cc hn ch trng thi l cha kha to ra cc ng dng web hiu qu. Trong bi ny, bn s thy lm th no bn c th qun l trng thi ca ASP.NET vi cc tnh nng lu tr thng tin bo mt v nht qun. Bn s c cc ty chn lu tr khc nhau, bao gm xem trng thi (view state), trng thi phin giao dch (session), v ty chnh cookies. Bn cng s xem xt lm th no chuyn thng tin t trang ny sang trang khc bng cch s dng cross-page (post) v chui truy vn (quey string). 4.1 Vn ca Trng thi Trong mt chng trnh Windows truyn thng, ngi dng tng tc vi mt ng dng lin tc chy. Mt phn ca b nh trn my tnh bn c phn b lu tr cc thit lp hin hnh ca thng tin lm vic. Trong mt ng dng web, mt trang web ASP.NET chuyn nghip c th trng ging nh mt ng dng lin tc chy, nhng l thc s ch l mt o nh thng minh. Trong mt yu cu web in hnh, khch hng kt ni n my ch web v yu cu mt trang. Khi trang c chuyn giao, kt ni c ct t, v cc my ch web t b bt c thng tin n c v khch hng. Vi thi gian ngi s dng nhn c mt trang, do m trang web ny ngng chy nn khng c thng tin cn li trong b nh ca web server. Thit k ny c mt li th ng k. Bi v khch hng cn phi c kt ni ch trong mt vi giy l nhiu nht, do mt my ch web c th x l mt s lng ln cc yu cu gn nh ng thi. Tuy nhin, nu bn mun gi li thng tin hi gian n c th c s dng trn nhiu postbacks hoc trn nhiu trang, bn cn phi thc hin cc bc b sung. Lu hnh ni b Trang 137

4.2 Xem trng thi (View State) Cc iu khin Web Server Controls lu tr hu ht cc gi tr ca chng vo view state, khi thuc tnh EnableViewState c thit lp vi gi tr true (mc nh). Thuc tnh ViewState ca trang cung cp thng tin view state hin hnh. Thuc tnh ny l mt th hin ca lp StateBag. StateBag l mt t in, c mi mc c lu trong mt khe "ring" bng cch s dng mt tn chui duy nht. Th d, hy xem xt m ny:this.ViewState["Counter"] = 1;

Lnh ny t gi tr 1 (hay ng hn, mt s nguyn c cha gi tr 1) vo trong ViewState. Nu hin ti khng c mc c tn Counter, mt mc mi s c thm t ng. Nu mt mc c lu tr di ci tn Counter, n s c thay th. Th d 1: To mt trang SimpleCounter.aspx c mt Button v Label.

Untitled Page

Phn m lnh trang SimpleCounter.aspx.cs :public partial class SimpleCounter : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { } protected void cmdIncrement_Click(object sender, EventArgs e) { int counter; if (ViewState["Counter"] == null) { counter = 1; } else { counter = (int)ViewState["Counter"] + 1; } ViewState["Counter"] = counter; lblCount.Text = "Counter: " + counter.ToString();

Lu hnh ni b

Trang 138

} }

Khi thc thi chng trnh, u tin ch xut hin button nh hnh sau:

Khi click vo button increment, gi tr counter c khi to bng 1 v gn cho ViewState vi tn Counter , v hin gi tr trn trang qua iu khin nhn lblCount: ViewState["Counter"] = counter; lblCount.Text = "Counter: " + counter.ToString(); Kt qu hin th:

Khi click tip hai ln trn button, gi tr ca bin counter c tng ln l 3, nh vy gi tr counter c duy tr qua cc ln request nh vo ViewSate[Counter]

Khi xem m ngun ca trang SimpleCounter qua trnh duyt, ni dung trang c cha khai bo _VIEWSTATE vi gi tr lu dng m Base64 (kiu m ho c bit ca chui v lun Lu hnh ni b Trang 139

lun c chp nhn trong mt ti liu HTML bi v n khng bao gm bt k k t m rng no) nh sau:

Hnh 4.1 M ngun trang SimpleCounter.aspx c bin _VIEWSTAE. 4.3 Chuyn thng tin gia cc trang Phn ny trnh by hai cch thc chuyn thng tin gia cc trang bng cch s dng Crosspage Post v chui truy vn (quey string) 4.3.1 S dng Cross-Page Post Th d 2: To trang CrossPage1.aspx, vi hai nt lnh Cross-Page Postback v Manual Transfer cho php chuyn thng tin n trang CrossPage2.aspx bng k thut crosspage post vi khai bo thuc tnh PostBackUrl="CrossPage2.aspx" trong khai bo button [Cross-Page Postback] v cch chuyn thng thng vi Server.Transfer("CrossPage2.aspx", true); khi click button [Manual Transfer] Ni dung trang CrossPage1.aspx: CrossPage1

Lu hnh ni b

Trang 140

First Name:
Last Name:


M lnh trangpublic partial class CrossPage1 : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { if (Request.QueryString["err"] != null) Page.Validate(); } protected void cmdTransfer_Click(object sender, EventArgs e) { Server.Transfer("CrossPage2.aspx", true); } public string FullName { get { return txtFirstName.Text + " " + txtLastName.Text; } } }

Thc thi trang CrossPage1.aspx, ni dung hin th nh sau: Nhp thng tin cho FirstName v LastName, sau click mt trong hai nt lnh u chuyn n trang CrossPage2.aspx

Sau khi click nt [Cross-Page Postback]

Lu hnh ni b

Trang 141

Trang CrossPage2.aspx: Untitled Page Ni dung m lnh trang CrossPage2.aspx.cs :public partial class CrossPage2 : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { if (PreviousPage != null) { lblInfo.Text = "You came from a page titled " + PreviousPage.Title + "
"; CrossPage1 prevPage = PreviousPage as CrossPage1; if (prevPage != null) { lblInfo.Text += "You typed in this: " + prevPage.FullName + "
"; } } } }

Lu hnh ni b

Trang 142

Trong m lnh trn ni dung FullName ch hin thi khi trang CrossPage2.aspx c chuyn n t trang CrossPage1.aspx vi mt trong hai cch trn. 4.3.2 S dng chui truy vn (Query String) Th d 3: To trang QueryStringSender.aspx, khi thc thi s chuyn gi tr cc iu khin trn trang n trang QuerStringRecipient.aspx qua chui truy vn gn vo chui url. Ni dung trang QueryStringSender.aspx: Untitled Page





Phn m lnh QueryStringSender.aspx.cs:public partial class QueryStringSender : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { if (!this.IsPostBack){ // Add sample values. lstItems.Items.Add("Econo Sofa"); lstItems.Items.Add("Supreme Leather Drapery"); lstItems.Items.Add("Threadbare Carpet"); lstItems.Items.Add("Antique Lamp"); lstItems.Items.Add("Retro-Finish Jacuzzi"); } } protected void cmdGo_Click(object sender, EventArgs e) { if (lstItems.SelectedIndex == -1) { lblError.Text = "You must select an item."; } else { // Forward the user to the information page, with the query string data.

Lu hnh ni b

Trang 143

string url = "QueryStringRecipient.aspx?"; url += "Item=" + Server.UrlEncode(lstItems.SelectedItem.Text) + "&"; url += "Mode=" + chkDetails.Checked.ToString(); Response.Redirect(url); } }}

Khi click nt [View Information] s chuyn n trang QueryStringRecipient.aspx cng vi chui truy vn nh sau : http://localhost:1222/StateManagement/QueryStringRecipient.aspx?Item=Threadbare + Carpet&Mode=True

Kt qu hin th ca trang QueryStringRecipient.aspx :

Ni dung trang QueryStringRecipient.aspx : Untitled Page

Lu hnh ni b

Trang 144

Phn m lnh ca trang QueryStringRecipient.aspx.cs: public partial class QueryStringRecipient : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { lblInfo.Text = "Item: " + Request.QueryString["Item"]; lblInfo.Text += "
Show Full Record: "; lblInfo.Text += Request.QueryString["Mode"]; } } 4.4 i tng Cookies C l bn cng tng ng k l mt thnh vin ca mt trang web hay mt forum no , v chc cng khng t ln ngc nh