You are on page 1of 73

TRNG CAO NG CNG NGH THNG TIN HU NGH VIT HN --------

KHOA KHOA HC MY TNH

N TT NGHIP H THNG THNG TIN


Tn ti: Nghin cu m hnh MVC trong lp trnh .NET xy dng website ng k mua gio trnh qua mng

Sinh vin thc hin: Nguyn Trng Tr Lp: HT02 Nin kha: 2008 - 2011 Ging vin hng dn: Ths.Nguyn Quang V

nng, thng 7 nm 2011 nng, thng 7 nm 2011

TRNG CAO NG CNG NGH THNG TIN HU NGH VIT HN --------

KHOA KHOA HC MY TNH

N TT NGHIP H THNG THNG TIN


Tn ti: Nghin cu m hnh MVC trong lp trnh .NET xy dng website ng k mua gio trnh qua mng

Sinh vin thc hin: Nguyn Trng Tr Lp: HT02 Nin kha: 2008 - 2011 Ging vin hng dn: Ths.Nguyn Quang V

nng, thng 7 nm 2011

LI CM N
Nh vy l ba nm hc ti trng Cao ng Cng Ngh Thng Tin Hu Ngh Vit Hn sp kt thc. n lc ny em vn ngh mnh tht may mn khi c vo hc ti trng Vit Hn. C s vt cht ca trng rt tt, thy c ging vin rt nhit tnh, cc thy c trong ban gim hiu trng chm lo ti sinh vin, tt c iu li cho em nhng n tng rt kh qun. c bit em xin dnh nhiu tnh cm n cc thy c trong nghnh H Thng Thng Tin, thy L Vit Trng, thy H Vn Phi, c Nguyn Phng Tm, c Nguyn Th Hoa Hu, thy Nguyn Vn Li. Trong sut ba nm hc ti trng, cc thy c tn tnh chm lo, dn dt chng em trong hc tp cng nh trong i sng hng ngy. Trc khi vo hc ti trng, em cha bao gi ngh cc thy c li c th quan tm, thn thit vi sinh vin n nh th. Trong thi gian hc tp ti trng, chng em rt nhiu ln lm cho cc thy c bun lng, nhng vi tm lng yu thng sinh vin, thy c b qua cho chng em, tht chng em khng bit phi bo p vi thy c nh th no na. Mt ln na em xin cm n cc thy c, em xin ha khi ra i s c gng sng xng ng vi nhng g m cc thy c dy bo em. Bo co n tt nghip, chnh l k t hi quan trng nht trong i sinh vin, l k thi th hin chng t mi sinh vin hc c nhng g trong sut cc nm hc ti trng. Em sau ba nm n lc, tht vinh d v t ho khi c tham d k bo co n tt nghip ny. Trong sut ba thng, da vo s n lc ca bn thn, c s gip ca cc thy c, em hon thnh bn bo co n tt nghip chuyn ngnh H Thng Thng Tin. Em xin chn thnh cm n thy Nguyn Quang V, thy tn tnh ch bo, hng dn em, gip em hon thnh n ca mnh. Mt ln na, em xin cm n tt c cc thy c, bn b ch bo, gip em v hc tp cng nh i sng. Em s lun nh v nhng iu nh mt k nim kh qun trong i sinh vin ca mnh. Nguyn Trng Tr i
Nguyn Trng Tr Lp HT02

MC LC
LI CM N ......................................................................................................................... i DANH MC CC T TING ANH .................................................................................. iv DANH MC CC BNG .................................................................................................... v DANH MC CC HNH .................................................................................................... vi M U ............................................................................................................................... 1 PHN 1 ................................................................................................................................. 3 GII THIU M HNH MVC ............................................................................................. 3 1.1. 1.2. 1.3. Xut x.................................................................................................................... 3 Kin trc ca m hnh MVC ................................................................................... 3 c im ca m hnh MVC .................................................................................. 5

PHN 2 ................................................................................................................................. 7 M HNH MVC TRONG ASP.NET .................................................................................... 7 2.1. Gii thiu tng quan ............................................................................................... 7 Lch s pht trin ca ASP.NET ...................................................................... 8 Khi qut cc thnh phn ca ASP.NET MVC ............................................. 12 Li ch ca m hnh ASP.NET MVC.............................................................. 13 So snh ASP.NET MVC vi ASP.NET ........................................................... 13

2.1.1. 2.1.2. 2.1.3. 2.1.4. 2.2.

Ci t ................................................................................................................... 15

PHN 3 ............................................................................................................................... 18 XY DNG NG DNG VI ASP.NET MVC FRAMWORK...................................... 18 3.1. 3.2. To mt project vi ASP.NET MVC .................................................................... 18 Tm hiu nh tuyn URL ..................................................................................... 22 H thng nh tuyn trong ASP.NET MVC lm g ?................................. 25

3.2.1.

3.2.2. Cc quy tc nh tuyn cc URL mc nh trong ASP.NET MVC Web Application ................................................................................................................... 25 3.3. 3.4. 3.5. 3.6. Xy dng Controllers ............................................................................................ 34 Xy dng Model ................................................................................................... 42 To giao din ngi dng vi View ..................................................................... 45 Truy nhp d liu vi LINQ ................................................................................. 51

PHN 4 ............................................................................................................................... 53 BO MT VI ASP.NET MVC APPLICATION ............................................................ 53 PHN 5 ............................................................................................................................... 57

ii

Nguyn Trng Tr Lp HT02

CHNG TRNH NG DNG ........................................................................................ 57 5.1. 5.2. M t chng trnh ng dng ............................................................................... 57 Hnh nh cc chc nng chnh ca trang website ................................................. 60

KT LUN V HNG PHT TRIN ........................................................................... 63 TI LIU THAM KHO ................................................................................................... 64

iii

Nguyn Trng Tr Lp HT02

DANH MC CC T TING ANH


Class: lp Graphical User Interface (GUI): giao din ha ngi dng Object Oriented Programming (OOP): lp trnh hng i tng GUI Component: thnh phn ha ngi dng Framework: nn tng Request: Yu cu Server: my ch Client: my trm Control: i tng iu khin Test-driven development (TDD): pht trin iu hng bi kim th Unit test: kim th n v Postback: phn hi Test: kim th Code: m lnh ConnectionString : chui kt ni Language Integrate Query (LINQ): ngn ng truy vn tch hp Solution: cc gii php cho d n Project: d n Browser : trnh duyt Businness logic: lp x l Implement: thc thi cc phng thc t mt lp Application Programming Interface - API: giao din lp trnh ng dng Render: tr li, biu din Override : np chng Redirect: chuyn hng

iv

Nguyn Trng Tr Lp HT02

DANH MC CC BNG
S hiu bng 2.1 2.2 3.1 3.2 3.3 Tn bng Qu trnh pht trin ca Asp.Net So snh gia Asp.Net Webform v Asp.Net MVC Cc Action Method theo URL X l cc URL Cc loi Action Result Trang 8 14 29 36 40

Nguyn Trng Tr Lp HT02

DANH MC CC HNH
S hiu hnh 1.1 1.2 1.1 2.2 2.3 2.4 2.5 2.6 3.1 2.2 3.3 3.4 3.5 3.6 3.7 3.8 3.9 3.10 3.11 4.1 4.2 4.3 4.4 vi Tn hnh Cc thnh phn chnh ca m hnh MVC M hnh tun t ca MVC M hnh MVC M hnh ASP.NET Webform Nn tng Asp.Net MVC Framwork Giao din to project mi Giao din Solution ca MVC Giao din website ng dng m hnh MVC Giao din to project MVC Thng bo hi c cho php to Unit Test Giao din Solution ca MVC Giao din website ng dng m hnh MVC M hnh hot ng ca MVC Giao din thm lp TimkiemController M hnh hot ng ca MVC Giao din trang Master.Page View Quanly Danh sch gio trnh Danh sch gio trnh Qun l ngi dng ng k ti khon mi Trang qun tr ngi dng To user Trang 4 4 7 9 12 16 17 17 18 19 20 21 24 29 44 47 48 51 52 53 54 54 55
Nguyn Trng Tr Lp HT02

4.5 4.6 5.1 5.2 5.3 5.4 5.5 5.6 5.7

Thm quyn mi Gn quyn cho user M hnh c s d liu Trang ch website Trang qun l cc khoa Trang qun l thng tin gio trnh Trang thm gio trnh Trang sa thng tin gio trnh Trang ng k mua gio trnh

55 56 59 60 60 61 61 62 62

vii

Nguyn Trng Tr Lp HT02

Tm hiu m hnh MVC trong lp trnh .NET 2011

M U
L do chn ti: Hin nay vic thit k mt trang web ASP.NET rt d dng, chng ta c th tm ti liu trn mng, tham kho cc project nghin cu v xy dng. Bi v do Microsoft mun to ra mt cng c ngi s dng c th d dng lm vic v xy dng mt trang web nhanh chng nht, ASP.NET WebForm c thit k thc hin nhng iu . ASP.NET Webform c thit k ngi dng cm thy nh mnh ang thit k mt chng trnh Windows Form vy, bng cch ko th cc button, t sinh code HTML, n gin, d hiu Chnh v th nn tng ASP.NET WebForm d ra i cch y hn 10 nm nhng hin nay vn ang s dng rng ri. Tuy nhin u im ca ASP.NET WebForm i khi li chnh l nhc im ca n, chnh l khng c s phn chia r rng gia giao din v code x l, nn ngay trong trang giao din li c cu lnh truy vn Sql. Chnh ci tin li l mt tnh nng no c xy dng th trong c c m HTML, Css, Javascrip, lnh x l s kin n khi chng ta cn thay th hoc nng cp mt chc nng no th rt rc ri. gi l khc phc nhng nhc im ca ASP.NET Webform, nm 2007 Microsoft cho ra i nn tng ASP.NET MVC. ASP.NET MVC l mt la chn thay th cho ASP.NET WebForm, c xy dng vi 3 lp chnh, lp giao din ( Views), lp iu khin (Controllers) v lp d liu (Models). Vic chia mt trang web thnh nhiu lp nh th ny gip cho nhng lp trnh vin c kinh nghim c th xy dng mt website vi cu trc cht ch, r rng. Vi cu trc 3 lp nh th ny, vic nng cp hoc thay th mt chc nng no tr nn ht sc d dng, ng thi vic kim th cng tr nn n gin hn. Vi nhng u im trn, trong tng li chc chn ASP.NET MVC s l mt nn tng chnh trong vic xy dng v pht trin mt website ASP.NET. Tuy nhin v y l mt cng ngh mi, nn ti Vit Nam hu nh cha c p dng nhiu, cng c rt t bn sinh vin bit ti m hnh ny. Chnh v th, em mnh dn chn ti nghin cu v MVC lm n tt nghip ca mnh. 1
Nguyn Trng Tr Lp HT02

Tm hiu m hnh MVC trong lp trnh .NET 2011 Mc ch nghin cu Em nghin cu ASP.NET MVC nhm nhng mc ch sau: - Hc c nhng kin thc mi. - Trong qu trnh tm hiu s gip em nng cao kh nng t hc ca mnh. - Phc v cho vic xy dng trang website mua bn sch, nhm mc ch l p dng c nhng g hc c a vo thc t. - To ngun ti liu ASP.NET MVC ting vit cho nhng ai cn tm hiu. i tng v phm vi nghin cu Nghin cu ASP.NET MVC 2.0, nghin cu cc kin thc lin quan. Phng php nghin cu Nghin cu l thuyt thng qua cc ebook c pht hnh bi Microsoft. Tm hiu nhng v d trn mng, tng bc p dng vo cc chng trnh th nghim. Sau tng hp li kin thc v hon thnh bo co v sn phm demo. ngha khoa hc v thc tin ca ti - Hin ti ASP.NET MVC l mt cng ngh cn mi ti Vit Nam, c rt nhiu bn sinh vin cha c bit n cng ngh ny, c bit l cc bn sinh vin ti trng Vit Hn. Chnh v th vic hon thnh bn bo co v chng trnh ng dng s gip ch rt nhiu cho cc bn sinh vin mun tip cn cng ngh mi mt cch nhanh nht, ti v hin ti ti liu ting vit cho ASP.NET MVC l r t him, ng thi c sn mt ng dng demo s gip cc bn d hiu v p dng hn. - ASP.NET MVC c rt nhiu a im vt tri, em ngh tng li ASP.NET MVC s dn thay th ASP.NET Webform trong vic xy dng website. Cho nn vic tm hiu cng ngh ny s c tnh thc tin rt cao, c th p dng ngay by gi hoc trong tng lai.

Nguyn Trng Tr Lp HT02

Tm hiu m hnh MVC trong lp trnh .NET 2011

PHN 1 GII THIU M HNH MVC


1.1. Xut x Tt c bt u vo nhng nm 70 ca th k 20, ti phng th nghim Xerox PARC Palo Alto. S ra i ca giao din ha (Graphical User Interface) v lp trnh hng i tng (Object Oriented Programming) cho php lp trnh vin lm vic vi nhng thnh phn ha nh nhng i tng ha c thuc tnh v phng thc ring ca n. Khng dng li , nhng nh nghin cu Xerox PARC cn i xa hn khi cho ra i ci gi l kin trc MVC (vit tt ca Model View Controller). MVC c pht minh ti Xerox Parc vo nhng nm 70, bi TrygveReenskaug. MVC ln u tin xut hin cng khai l trong Smalltalk-80. Sau trong mt thi gian di hu nh khng c thng tin no v MVC, ngay c trong ti liu 80 Smalltalk. Cc giy t quan trng u tin c cng b trn MVC l A Cookbook for Using the Model-View-Controller User Interface Paradigm in Smalltalk - 80, bi Glenn Krasner v Stephen Pope, xut bn trong thng 8 / thng 9 nm 1988. 1.2. Kin trc ca m hnh MVC Trong kin trc MVC, mt i tng ha ngi dng (GUI Component) bao gm 3 thnh phn c bn: Model, View, v Controller. Model c trch nhim i vi ton b d liu cng nh trng thi ca i tng ha. View chnh l th hin trc quan ca Model, hay ni cch khc chnh l giao din ca i tng ha. V Controller iu khin vic tng tc gia i tng ha vi ngi s dng cng nh nhng i tng khc.

Nguyn Trng Tr Lp HT02

Tm hiu m hnh MVC trong lp trnh .NET 2011

Hnh 1.1: Cc thnh phn chnh ca m hnh MVC Khi ngi s dng hoc nhng i tng khc cn thay i trng thi ca i tng ha, n s tng tc thng qua Controller ca i tng ha. Controller s thc hin vic thay i trn Model. Khi c bt k s thay i no xy ra Model, n s pht thng ip (broadcast message) thng bo cho View v Controller bit. Nhn c thng ip t Model, View s cp nht li th hin ca mnh, m bo rng n lun l th hin trc quan chnh xc ca Model. Cn Controller, khi nhn c thng ip t Model, s c nhng tng tc cn thit phn hi li ngi s dng hoc cc i tng khc.

Hnh 3.2: M hnh tun t ca MVC

Nguyn Trng Tr Lp HT02

Tm hiu m hnh MVC trong lp trnh .NET 2011 V d: Ly v d mt GUI Component (thnh phn ha ngi dng) n gin l Checkbox. Checkbox c thnh phn Model qun l trng thi ca n l check hay uncheck, thnh phn View th hin n vi trng thi tng ng ln mn hnh, v thnh phn Controller x l nhng s kin khi c s tng tc ca ngi s dng hoc cc i tng khc ln Checkbox. Khi ngi s dng nhn chut vo Checkbox, thnh phn Controller ca Checkbox s x l s kin ny, yu cu thnh phn Model thay i d liu trng thi. Sau khi thay i trng thi, thnh phn Model pht thng ip n thnh phn View v Controller. Thnh phn View ca Checkbox nhn c thng ip s cp nht li th hin c a Checkbox, phn nh chnh xc trng thi Checkbox do Model lu gi. Thnh phn Controller nhn c thng ip do Model gi ti s c nhng tng tc phn hi vi ngi s dng nu cn thit. 1.3. c im ca m hnh MVC Ci li ch quan trng nht ca m h nh MVC l n gip cho ng dng d bo tr, module ha cc chc nng, v c xy dng nhanh chng. MVC tch cc tc v ca ng dng thnh cc phn ring l model, view, controller gip cho vic xy dng ng dng nh nhng hn. D dng thm cc tnh nng mi, v cc tnh nng c c th d dng thay i. MVC cho php cc nh pht trin v cc nh thit k c th lm vic ng thi vi nhau. MVC cho php thay i trong 1 phn ca ng dng m khng nh hng n cc phn khc. S d nh vy v kin trc MVC tch bit (decoupling) s ph thuc gia cc thnh phn trong mt i tng ha, lm tng tnh linh ng (flexibility) v tnh ti s dng (reusebility) ca i tng ha . Mt i tng ha by gi c th d dng thay i giao din bng cch thay i thnh phn View ca n trong khi cch thc lu tr (Model) cng nh x l (Controller) khng h thay i. Tng t, ta c th thay i cch thc lu tr (Model) hoc x l (Controller) ca i tng ha m nhng thnh phn cn li vn gi nguyn.

Nguyn Trng Tr Lp HT02

Tm hiu m hnh MVC trong lp trnh .NET 2011 Chnh v vy m kin trc MVC c ng dng xy dng rt nhiu framework v th vin ha khc nhau. Tiu biu l b th vin ha ca ngn ng lp trnh hng i tng SmallTalk (cng do Xerox PARC nghin cu v pht trin vo thp nin 70 ca th k 20). Cc Swing Components ca Java cng c xy dng da trn kin trc MVC. c bit l nn tng ASP.NET MVC Framework s c em trnh by chng sau y.

Nguyn Trng Tr Lp HT02

Tm hiu m hnh MVC trong lp trnh .NET 2011

PHN 2 M HNH MVC TRONG ASP.NET


2.1. Gii thiu tng quan Nh ni phn 1, m hnh MVC vi nhng u im c ng dng nhiu trn cc nn tng (framework) khc nhau, trong c mt nn tng (framework) ni ting c nhiu ngi bit n v s dng l nn tng (framework) ASP.NET MVC. Vy ASP.NET MVC l g ? ASP.NET MVC l mt nn tng (framework) pht trin ng dng web mi ca Microsoft, n kt hp gia tnh hiu qu v nh gn ca m hnh model -viewcontroller(MVC), nhng tng v cng ngh hin i nht, cng vi nhng thnh phn tt nht ca nn tng ASP.NET hin thi. L mt la chn khc bn cnh nn tng WebForm khi pht trin 1 ng dng web s dng ASP.NET. Trong chng ny em s trnh by l do li sao ASP.NET MVC c to ra, n c g khc so vi ASP.NET WebForm, v cui cng l nhng ci mi trong ASP.NET MVC.

Hnh 4.1: M hnh MVC 7


Nguyn Trng Tr Lp HT02

Tm hiu m hnh MVC trong lp trnh .NET 2011 2.1.1. Lch s pht trin ca ASP.NET

hiu c nhng c im ni bt v mc tiu thit k ca ASP.NET MVC, trc tin cn coi li lch s pht trin ca website ASP. Trong s nhng nn tng pht trin web ca Microsoft, chng ta s thy sc mnh v s phc tp tng ln theo tng nm. Nh trong bng ta thy mi nn tng mi u gii quyt nhng thiu st c trng ca nn tng trc . Tng t, ASP.NET MVC c thit k gii quyt nhng thiu st ca ASP.NET WebForms truyn thng, nhng li bng cch nhn mnh s n gin. Bng 2.1: Qu trnh pht trin ca Asp.Net
Thi k Thi k u Cng ngh Common Gateway Interface (CGI) Sc mnh im yu

n hat

linh Chy ngai web server, nn cn La chn duy nht nhiu ti nguyn vo thi im ny (cn cc tin trnh ring l trn HH cho mi li yu cu) Cp thp

gin,

Thi k tip theo

Microsoft Internet Database Connector (IDC)

Chy trong web Ch l ng gi server cho nhng cu truy vn SQL v template cho cc kt qu c nh dng Mc ch chung Thng dch thi gian thc Xu hng spaghetti code

1996

Active Server Pages (ASP)

2002/03

ASP.NET 1.0/1.1

c bin dch Giao din c trng thi

Nng n trn bng thng HTML kh nhn

Nguyn Trng Tr Lp HT02

Tm hiu m hnh MVC trong lp trnh .NET 2011 Cu trc ln Xu hng lp trnh hng i tng Khng th test

2005 2007 2008 2009 2010 2011

ASP.NET 2.0 ASP.NET Ajax ASP.NET 3.5 ASP.NET MVC 1.0 ASP.NET MVC 2.0 ASP.NET MVC 3.0

ASP.NET truyn thng: ASP.NET l 1 bc nhy vt khi ln u tin xut hin, nhm thu hp

khong cch gia pht trin Window Form hng i tng (c trng thi) v pht trin web hng HTML (khng c trng thi). Hnh di minh ha cng ngh Asp.net WebForm trong ln u xut hin nm 2002.

Hnh 2.2: M hnh ASP.NET Webform Microsoft c gng che du HTTP (khng trng thi) v HTML (vo thi im khng thn thin vi nhiu ngi lp trnh) bng cch dng m hnh giao din nh mt i tng iu khin (control) c cu trc hot ng pha server. 9
Nguyn Trng Tr Lp HT02

Tm hiu m hnh MVC trong lp trnh .NET 2011 Mi i tng iu khin (control) lu gi trng thi qua cc yu cu (request) (s dng tnh nng ViewState), t ng to ra m HTML khi cn thit, v t ng kt ni vi cc s kin pha client (v d nh click) vi m hi p pha server. Kt qu WebForm l mt lp tru tng ln nhm chuyn giao din c x l s kin thng qua Web. Nhc im ca ASP.NET ASP.NET truyn thng tng l mt tng hay, nhng thc t li tr nn rc ri. Qua nhiu nm, s dng ASP.NET WebForm cho thy c mt s nhc im: ViewState (trng thi hin th): K thut lu gi trng thi qua cc yu cu

(request) thng mang li kt qu l nhng khi d liu ln c chuyn qua li gia client v server. N c th t hng trm kilobytes trong nhiu d liu thc, v n i qua i li vi mi ln yu cu (request), lm nhng ngi truy cp vo trang web phi ch mt thi gian di khi h click mt button hoc c gng di chuyn n trang k tip. ASP.NET b tnh trng ny rt ti t, Ajax l mt trong cc gii php c a ra gii quyt vn ny. Page life cycle (chu k sng ca mt trang web): K thut kt ni s kin

pha client vi m x l s kin pha server l mt phn ca page life cycle, c th cc k rc ri v mng manh. Ch c mt s t lp trnh vin thnh cng trong vic x l h thng i tng iu khin (control) trong thi gian thc m khng b li ViewState ho c hiu c rng mt s trnh x l s kin khng c kch hat mt cch b him. Limited control over HTML (gii hn kim sot HTML): Server control t to ra n nh l m HTML, nhng khng phi l m HTML m bn mun. Ngoi vic m HTML ca chng thng khng tun theo tiu chun web hoc khng s dng tt CSS m h thng cc server control cn to ra cc gi tr ID phc tp v khng on trc dc, lm kh khn trong vic s dng JavaScript. thc sai v s tch bit cc thnh phn: M hnh code-behind ca ASP.NET cung c p mt gii php cho php ng dng a m ra khi cc dng HTML vo thnh mt lp code behind ring bit. iu ny c ca ngi l lm 10
Nguyn Trng Tr Lp HT02

Tm hiu m hnh MVC trong lp trnh .NET 2011 tch bit gia giao din vi m x l, nhng thc t ngi lp trnh c khuyn khch pha trn m x l giao din (x l cy control pha server) vi m x l chng trnh (x l CSDL) trong cng nhng lp code behind khng l. Nu khng c s tch bit r rng gia cc thnh phn, kt qu cui cng thng l mng manh v kh hiu. Untestable (kim chng): Khi nhng ngi thit k ca ASP.NET ln u tin gii thiu nn tng ny, h c th khng lng trc c l vic kim th (test) t ng s tr thnh mt cng on chnh ca vic pht trin phn mm ngy nay. Khng qu ngc nhin, cu trc m h thit k hon ton khng thch hp vi vic kim th (test) t ng. ASP.NET tip tc b sung thm cc tnh nng. Phin bn 2.0 thm nhiu thnh phn (component) chun c th gim kh nhiu lnh m bn cn phi t vit. AJAX release nm 2007 l phn hi ca Microsoft vi phong tro Web 2.0/Ajax hi , h tr tng tc pha client trong khi lm cho cng vic ca ngi lp trnh n gin hn. Phin bn 3.5 l mt bn nng cp nh hn, thm h tr cho cc tnh nng ca .NET 3.5 v cc i tng iu khin (control) mi. Tnh nng ASP.NET Dynamic Data to ra cc trang cho php c hnh sa / lit k c s d liu mt cch t ng . S ra i ca ASP.NET MVC: Vo thng 11 nm 2007, hi tho ALT.NET ti Austine, Texas, gim c iu hnh Scott Guthrie ca Microsoft cng b v m t v nn tng pht trin web MVC mi, xy dng trn ASP.NET, r rng c thit k nh l mt li hi p thng vo cc li ch trch trc y. ASP.NET MVC cung cp s tch bit r rng gia cc thnh phn bt chp vic s dng li m hnh MVC mc d n khng c g mi MVC ln u c cng b vo nm 1978 trong d n Smalltalk ca Xerox PARC - nhng ngy nay n ph bin nh l mt kin trc cho cc ng dng web bi v cc l do sau : Ngi dng tng tc vi ng dng MVC t nhin s theo mt chu trnh :

ngi dng thc hin mt hnh ng, v hi p li, ng dng thay i m hnh d liu ca n v chuyn mt trang c cp nht cho ngi dng, v sau 11
Nguyn Trng Tr Lp HT02

Tm hiu m hnh MVC trong lp trnh .NET 2011 vng xoay lp li. iu ny l thch hp cho mt ng dng web phi lun chuyn hng lat cc li yu cu cng nh hi p. Nhng ng dng web lun cn phi kt hp mt s cng ngh (v c s d liu, HTML v m x l), lun chia thnh nhiu lp, v nhng mu ra ny sinh thnh cc khi nim trong MVC. ASP.NET MVC thc thi mt bin th hin i trn MVC m c bit thch hp vi cc ng dng web. 2.1.2. Khi qut cc thnh phn ca ASP.NET MVC

Nh gii thiu chng trn, ASP.NET MVC cng chia nh mt ng dng thnh ba thnh phn ci t, mi thnh phn ng mt vai tr khc nhau v nh hng ln nhau, l models, views, v controllers.

Hnh 2.3: Nn tng Asp.Net MVC Framwork Models trong cc ng dng da trn MVC l nhng thnh phn c nhim v lu tr thng tin, trng thi ca cc i tng, thng thng n l mt lp c nh x t mt bng trong CSDL. Ly v d, chng ta c lp Gio trnh c s dng m t d liu t bng Gio trnh trong SQL, bao gm M gio trnh, Tn gio trnh... Views chnh l cc thnh phn chu trch nhim hin th cc thng tin ln cho ngi dng thng qua giao din. Thng thng, cc thng tin cn hin th c ly t thnh phn Models. V d, i tng Gio trnh c mt "Edit" view bao gm cc textbox, cc dropdown v checkbox chnh sa cc thuc tnh ca thng tin gio trnh; c mt "Display" view gm 2 dng, ct dng l M gio trnh, dng sau l Tn gio trnh... xem thng tin v sinh vin. 12
Nguyn Trng Tr Lp HT02

Tm hiu m hnh MVC trong lp trnh .NET 2011 Controllers trong cc ng dng kiu MVC chu trch nhim x l cc tc ng v mt giao din, cc thao tc i vi models, v cui cng l chn mt view thch hp hin th ra mn hnh. Trong kin trc MVC, View ch c tc dng hin th giao din m thi, cn iu kin dng nhp xut ca ngi dng vn do Controllers m trch. 2.1.3. Li ch ca m hnh ASP.NET MVC

C tnh m rng do c th thay th tng thnh phn 1 cch d dng Khng s dng Viewstate, iu ny lm cc nh pht trin d dng iu H thng nh tuyn mi mnh m. H tr tt hn cho test-driven development (TDD m hnh pht trin kim

khin ng dng ca mnh. -

th) ci t cc kim th n v (unit tests) t ng, xc nh v kim tra li cc yu cu trc khi bt tay vo vit code. H tr kt hp rt tt gia ngi lp trnh v ngi thit k giao din. S dng cc tnh nng tt nht c ca ASP.NET. So snh ASP.NET MVC vi ASP.NET

2.1.4.

Bn c nghe qua v im yu v gii hn ca ASP.NET WebForm truyn thng, v lm th no m ASP.NET MVC vt qua nhng vn ny. iu khng c ngha l ASP.NET WebForm cht m ch l : Microsoft mun mi ngi hiu rng c hai nn tng song song nhau, h tr cho nhau, v c hai u l i tng cho vic pht trin hin ti. Ni chung, vic bn chn la gia hai m hnh cn ty vo hon cnh. ASP.NET WebForm mang ti mt trang web m giao din c th lu gi trng thi, v cui cng thm vo mt lp tru tng tinh vi nm trn HTTP v HTML, s dng ViewState v postback to ra hiu ng ca vic c trng thi . iu ny thch hp vi phong cch pht trin ko v th ca Window Form, tc l bn t cc i tng c giao din ln trang v m x l vo trnh x l s kin ca chng.

13

Nguyn Trng Tr Lp HT02

Tm hiu m hnh MVC trong lp trnh .NET 2011 MVC ha vo bn cht khng trng thi ca HTTP, lm vic chung vi n hn l chng li. iu ny yu cu bn phi hiu tht s cch lm vic ca mt ng dng web, t c iu , MVC cung cp mt cch tip cn n gin, mnh m v hin i cho vic vit cc ng dng web vi m c trt t m d dng kim th (test) v bo tr sau ny, gii phng nhng phc tp kh chu v cc gii hn khng ng c. iu c bit l ASP.NET MVC c m ngun m, khng ging cc nn tng trc , bn c th d dng ti m ngun gc ca ASP.NET MVC, thm ch bn c th sa i v to ra phin bn ca ring bn. C nhng tnh hung m ASP.NET WebForm kh tt thm ch cn tt hn ASP.NET MVC. V d nh cc ng dng nh, ni b m trc tip kt ni thng vo cc bng CSDL hoc dn ngi s dng thng qua cc trnh hng dn t ng (wizard). V th s khng cn phi lo lng v bng thng do ViewState, khng dnh dng ti vn ti u ha h thng tm kim, v khng b lm phin v vic kim th (test) v bo tr lu di. S tin li ca cch pht trin kiu ko th ca ASP.NET WebForm lm m i cc im yu ca n. Nhng mt khc, nu bn vit 1 ng dng trn Internet, hoc cc ng dng ni b ln hn, bn s hng ti tc download nhanh v tng thch trnh duyt cho, c xy dng vi cht lng cao hn, m kin trc tt thch hp cho vic test t ng, trong trng hp ASP.NET MVC s mang li nhng u im quan trng. Bng 2.2: So snh gia ASP.NET Webform v ASP.NET MVC Tnh nng Kin trc chng trnh Kin ASP.NET trc m ASP.NET MVC hnh Kin trc s dng vic phn chia chng trnh thnh Controllers, Models, View C php chng trnh S dng c php Cc s kin c kiu

WebForm->Business>Database

WebForm, tt c cc s khin bi controllers, cc 14


Nguyn Trng Tr Lp HT02

Tm hiu m hnh MVC trong lp trnh .NET 2011 kin v control do server control khng do server qun l Truy cp d liu qun l

S dng hu ht cc cng Phn ln dng LINQ to ngh truy cp d liu SQL class to m hnh trong ng dng truy cp i tng Debug chng trnh phi Debug c th s dng cc thc hin tt c bao gm unit test kim tra cc cc lp truy cp d liu, phng thc trong s hin th, iu khin cc controllers controls

Debug

Tc phn ti

Tc phn ti chm Phn ti nhanh hn do trong khi trang c qu khng phi qun l nhiu cc controls v ViewState qun l cc control trong trang

ViewState qu ln Tng tc vi javascrip

Tng tc vi javascrip Tng tc vi javascrip d kh khn v cc controls dng v cc i tng c iu khin bi server khng do server qun l iu khin khng kh Cu trc a ch URL c Cu trc a ch rnh dng <filename>.aspx?&<cc tham s> mch theo dng Controllers/Action/ID

URL Address

2.2. Ci t Trc ht to mt ng dng ASP.NET MVC bn cn phi p ng cc iu kin sau: Do chng ta cn phi ci b Visual Studio 2008 tr ln nn my tnh cn Sau chng ta cn phi ci t b Visual Studio 2008 hoc 2010 (trong

phi c cu hnh tt thiu: cn trng 5Gb cng, RAM 1,5G, chip phi mnh. n ny em s dng Visual Studio 2010). 15
Nguyn Trng Tr Lp HT02

Tm hiu m hnh MVC trong lp trnh .NET 2011 Sau khi chng ci t xong b Visual Studio, khi to mt d n MVC, ta chn File -> New Project (hoc s dng phm tt Ctrl + Shift + N). Ta c th ty chn ngn ng Visual Basic hoc c# (trong n ny em chn C#), ta chn tip ng dng Web, chn tip ASP.NET MVC 2 Web application.

Hnh 2.4: Giao din to project mi Ta c th t li tn d n hoc ni lu ty chng ta.

16

Nguyn Trng Tr Lp HT02

Tm hiu m hnh MVC trong lp trnh .NET 2011 Ta nhn button Ok, chng trnh s to cho chng ta mt ng dng Web MVC mu nh sau:

Hnh 2.5: Giao din Solution ca MVC Bn nhn F5 chy chng trnh.

Hnh 2.6: Giao din website ng dng m hnh MVC Nh vy l chng ta to cho mnh mt trang Web nh ng dng m hnh MVC, trong cc phn sau chng ta s tm hiu r hn cch thc hot ng ca m hnh MVC trong ASP.NET. 17
Nguyn Trng Tr Lp HT02

Tm hiu m hnh MVC trong lp trnh .NET 2011

PHN 3 XY DNG NG DNG VI ASP.NET MVC FRAMWORK


3.1. To mt project vi ASP.NET MVC Trong b phn mm Visual Studio 2010 c sn ASP.NET MVC FrameWork, ta to theo ng dn sau: File -> New Project -> Visual C# -> Web -> ASP.NET MVC Web Application

Hnh 3.1: Giao din to project MVC Khi to ASP.NET MVC Web application th mt hp thoi Unit Test xut hin. Chn Yes nu mun to mt Project Test, ngc li th chn No.

18

Nguyn Trng Tr Lp HT02

Tm hiu m hnh MVC trong lp trnh .NET 2011

Hnh 3.2: Thng bo hi c cho php to Unit Test Sau khi mt ASP.NET MVC Web application c to, nhn vo Solution Explore s thy 3 th mc xut hin: Model, View, Controllers cha cc i tng tng ng vi cc thnh phn Models, View, Controllers trong m hnh MVC. Visual Studio s to mt solution mi bao gm hai projects con. Project u tin l web project ni m ta s ci t ng dng. Project th hai l testing project m ta dng test project th nht:

19

Nguyn Trng Tr Lp HT02

Tm hiu m hnh MVC trong lp trnh .NET 2011

Hnh 3.3: Giao din Solution ca MVC Chy ng dng bng cch nhn F5. Nu l ng dng chy ln u th s c thng bo hi c cho m ch Debug hay khng ? Nu ng chn Modify the Web.config file to enable debugging, khng mun Debug chn Run without debugging.

20

Nguyn Trng Tr Lp HT02

Tm hiu m hnh MVC trong lp trnh .NET 2011 Kt qu khi chy ng dng:

Hnh 3.4: Giao din website ng dng m hnh MVC Cu trc th mc trong Project: Cu trc th mc mc nh ca ng dng ASP.MVC gm c 3 th mc chnh: Controllers Models Views ASP.NET MVC khuyn khch vic a nhng lp (class) iu khin vo bn trong th mc /Controllers, nhng lp (class) thuc v m hnh d liu vo bn trong th mc /Models, v nhng g lin quan n giao din vo th mc /Views. Mc d ASP.NET MVC Framework khng bt buc chng ta phi s dng cu trc ny, nhng y l cu trc mc nh khi chng ta to mt d n (project) mi v ASP.NET MVC lun lun khuyn khch vic s dng n phn chia ng dng. Ngoi tr trng hp ta ra mt l do thuyt phc thay i n.

21

Nguyn Trng Tr Lp HT02

Tm hiu m hnh MVC trong lp trnh .NET 2011 3.2. Tm hiu nh tuyn URL ASP.NET MVC Framework c mt b my nh x URL tht s mnh m. B my ny cung cp phng php rt linh hot trong vic nh x URLs sang cho Controller. Bn c th d dng nh ra cc quy lut nh x, ci t ASP.NET MVC da vo cc quy lut nh x , xc nh xem phi thc thi Controller no. ASP.NET MVC cn c kh nng phn tch URL, chuyn cc thng s trong URL thnh cc tham s trong phn gi hm ca Controller . ng i mc nh t ASP.NET MVC URL n Controller Classes Browser (trnh duyt) yu cu mt a ch t Controller Acction trong ASP.NET MVC Framework c gi l nh tuyn URL (URL routing). URL routing s ch nh yu cu (request) ti Controller Action. URL routing s dng mt bng nh tuyn iu khin cc yu cu (request). Bng nh tuyn c to khi ng dng c chy ln u tin. Bng nh tuyn c thit lp trong file Global.asax. using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.Mvc; using System.Web.Routing; namespace Totnghiep { public class MvcApplication : System.Web.HttpApplication { public static void RegisterRoutes(RouteCollection routes) { routes.IgnoreRoute( "{resource}.axd/{*pathInfo}"); routes.MapRoute( "Default", // Route name 22
Nguyn Trng Tr Lp HT02

Tm hiu m hnh MVC trong lp trnh .NET 2011 "{controller}/{action}/{id}", // URL with parameters new { controller = "Home", action = "Index", id = UrlParameter.Optional } // Parameter defaults ); } protected void Application_Start() { AreaRegistration.RegisterAllAreas(); RegisterRoutes(RouteTable.Routes); } } } Khi ng dng chy ln u tin, phng thc Application_Start() c gi. Phng thc ny gi mt phng thc khc RegisterRouter(RouteTable.Router) to bng nh tuyn. nh tuyn mc nh chia mt yu cu (request) thnh 3 on, mi phn on nm gia 2 du /. Phn on u tin cha mt Controller, phn on th 2 cha Controller Action, phn on th 3 l tham s u vo ca Controller Action. V d: vi a ch /Quanly/Editgiaotrinh/1 c hiu l
Controller = Quanly Action = Editgiaotrinh Id = 1

Controller mc nh s l HomeController, action mc nh l Index, Id mc nh l controller = "Home", action = "Index", id = UrlParameter.Optiona

23

Nguyn Trng Tr Lp HT02

Tm hiu m hnh MVC trong lp trnh .NET 2011 nh x cc URL vo trong class Controller Hu ht cc Web Framework, nh ASP , PHP , JSP , ASP.NET WebForms , u nh x cc URL vo mt file c lu trn a. Ly v d URL /Giaotrinh.aspx hay /Giaotrinh.php c chuyn n file Giaotrinh.aspx hay Giaotrinh.php trn a cng x l. Khi mt ng dng web nhn c HTTP Request n Web Server, th Web Framework s chy mt on code c th tng ng vi ni dung ca file, v on code ny ng vai tr x l yu cu do pha client gi n. Thng thng th on code ny s sinh ra HTML v p ng li pha client. MVC Framework li hot ng theo mt cch hon ton khc, thay v nh x cc URL vo cc file lu trn a, n s a thng vo cc lp (class). Nhng lp (class) c nh x ti c gi l Controllers, v chng s x l yu cu (request) c yu cu n, kim sot dng nhp xut v giao din i vi ngi dng, thc thi cc ng dng v data logic tng ng vi yu cu (request). Cui cng, chng s dng cc thnh phn Views to HTML v p tr li yu cu (request).

Hnh 3.5: M hnh hot ng ca MVC

24

Nguyn Trng Tr Lp HT02

Tm hiu m hnh MVC trong lp trnh .NET 2011 3.2.1. H thng nh tuyn trong ASP.NET MVC lm g ?

ASP.NET MVC Framwork c mt h thng nh tuyn URL (URL Routing System) linh hot cho php xc nh cc quy tc nh x a ch URL bn trong ng dng. Mt h thng nh tuyn c 2 mc ch: Xy dng mt tp hp cc URL i vo ng dng v nh tuyn chng ti cc Controller v thc thi cc phng thc Action x l. Xy dng cc URL gi i m c th gi ngc tr li Controller/Action. S dng cc quy tc nh x URL iu khin URL i vo v i ra tng tnh mm do cho vic lp trnh ng dng, ngha l nu mun thay i cu trc URL (v d /Giao_trinh bng /Lop) c th thay i mt tp hp quy tc nh x mc ng dng m khng cn phi vit li m lp trnh bn trong Controllers v View. 3.2.2. Cc quy tc nh tuyn cc URL mc nh trong ASP.NET MVC

Web Application Mc nh khi to ng dng vi ASP.NET MVC Web Application trong Visual Studio s to ra mt ASP.NET MVC Application Class gi l Global.asax cha cu hnh cc quy tc nh tuyn URL. Xy dng cc nh tuyn thng qua phng thc RegisterRoutes(ReouteCollection router) v khi ng dng bt u, ng dng Application_Start() trong Global.asax s gi RegisterRouter to bng nh tuyn.

25

Nguyn Trng Tr Lp HT02

Tm hiu m hnh MVC trong lp trnh .NET 2011

Nguyn tc nh x u tin trong hnh trn ch ra cho ASP.NET MVC Framework mt quy lut nh x URL theo dng /[controller]/[action]/[id] tng ng vi tn controller c nh x n / tn action method c triu gi / v tham s truyn vo action method . Vi ASP.NET MVC Web Application th mc nh controllers l HomeController, mc nh ControllerAction l Index v Id l rng Khi ng dng ASP.NET MVC Web Application nhn c mt URL, MVC FrameWork s nh gi cc quy tc nh tuyn trong tp hp RouteTable.Routes quyt nh Controller no s iu khin request. MVC Framwork s chn controller bng cch nh gi cc quy tc trong bng nh tuyn theo trt t sn c. Route Instances Quy tc nh x c ng k bng cch khai bo thm mt Route instances vo System.Web.Mvc.RouteTables Route colletion.
Nguyn Trng Tr Lp HT02

26

Tm hiu m hnh MVC trong lp trnh .NET 2011 Class Route ny c mt s thuc tnh m bn c th s dng cu hnh (configure) quy tc nh x ca bn. Bn c th set nhng thuc tnh theo cch truyn thng ca .NetFramework 2.0

Hoc bn c th tn dng tnh nng object initializer ca .NetFramework 3.5 tr ln

Nh hnh trn ta c th thy cc thuc tnh trong lp Route c th nh sau: Thuc tnh Url trong lp Route dng khai bo mt Pattern URL mt quy tc nh x URL khi mt URL c yu cu n web ca chng ta, MVC Framework s t ng nh x URL n Pattern ny v phn tch cc thnh phn trong URL bit u l Controller , u l Action Method v u l tham s u vo cho Action Method . Bn khng b gii hn bi mt tham s duy nht m chng ta c th c mt bt k s lng tham s no m bn mun c trong URL. V d bn c th s dng quy tc nh x

/Blogs/[Username]/Archive/[Year]/[Month]/[Day]/[Title] m ha mt URL yu cu n v MVC Framework s t ng phn tch v truyn nhng tham s nh l Username, Year, Month, Day v Title n Action Method trong Controller ca chng ta. Thuc tnh Default trong class Route dng khai bo mt tp gi tr mc nh c s dng x l cc URL c yu cu n khng c cc gi tr tham s nh nh thuc tnh Url. V d quy tc nh x URL bn trn chng ta khai bo 27
Nguyn Trng Tr Lp HT02

Tm hiu m hnh MVC trong lp trnh .NET 2011 2 tham s mc nh trong Url l Action v Id. iu ny c ngha l nu mt URL: / Quanly / c yu cu n th h thng nh x s mc nh s dng Index nh l mt tn Action Method trong QuanlyController, c th l Action Method Index() trong QuanlyController s c thc thi x l khi ngi dng yu cu Url / Quanly/. Tng t, nu nh Url /Quanly/Danhsachgt c yu cu th mt gi tr tham s null s c s dng cho Action Method Danhsachgt(). Thuc tnh RouteHandler trong class Route khai bo mt IRouteHandler c th c s dng x l yu cu sau khi URL c m ha v xc nh c quy tc nh x thch hp. Trong v d trn chng ta ch cho MVC Framework rng chng ta mun s dng class System.Web.Mvc.MvcRounteHandler x l cc URL m chng ta cu hnh. L do cho vic ny l chng ta mun chc rng h thng nh x URL c s dng cho c hai trng hp c ngi dng yu cu l MVC v non-MVC (WebForms). Ngoi ra cn mt thuc tnh na trong class Route m chng ta s tm hiu sau torng bi vit ny. N cho php chng ta xc nh trc nhng iu kin cn thit p dng cho mt quy tc nh x c th. V d chng ta c th ch mun quy tc nh x ch p dng cho HTTP c th, hoc chng ta c th dng Regular Expression nh nhng tham s lc nhng quy tc nh x ph hp Route Rules Evaluation Khi mt URL c yu cu n ASP.NET MVC Application, MVC Framework tm trong bng h thng nh x (RouteTable.Routes collection) xc nh mt quy tc nh x thch hp x l. MVC Framework xc nh Controller bng cch tm trong nhng quy tc nh x m chng ta to theo t t t trn xung di. URL c yu cu n s c so snh vi tng quy tc nh x trong RouteTable.Routes collection, nu mt quy tc nh x no ph hp vi URL th n s c p dng ( tt c nhng quy tc cn li s c b qua). iu ny c ngha l bn phi sp xp cc quy tc nh x mt cch tht hp l.

28

Nguyn Trng Tr Lp HT02

Tm hiu m hnh MVC trong lp trnh .NET 2011 Routing Scenario: Custom Search URL Hy s dng cc quy tc nh x lm mt kch bn thc t bng cch chng ta s thc hi n chc nng tm kim cho trang web ng k mua gio trnh ca chng ta. u tin ta s thm mt lp TimkiemController cho ng dng:

Hnh 3.6: Giao din thm lp TimkiemController Ta s nh ngha hai Action Method trong class TimkiemController. Action Method Index() s c s dng trnh by mt trang tm kim, trong trang tm kim s c c mt TextBox cho php ngi dng nhp vo v gi mt t kha tm kim. Cc Action Method Result() s c s dng x l khi ngi dng Submit v thc hin vic tm kim c s d liu, v sau hin th kt qu li cho ngi dng:

29

Nguyn Trng Tr Lp HT02

Tm hiu m hnh MVC trong lp trnh .NET 2011

S dng quy tc nh x mc nh /[controller]/[action]/[id] , Chng ta s s dng nhng URL sau y gi x l cho chc nng tm kim sn phm thng qua SearchController: Bng 3.1: Cc Action Method theo URL URL /Timkiem/?tenGT=XML&tien=20001 Action Method Index

Lu rng khi ta s dng URL / Timkiem/ l chng ta s dng quy tc nh tuyn mc nh do Visual Studio to sn theo mc nh khi chng ta to ng dng ny v nh hi ny ta cp v thuc tnh Default trong class Route, MVC Framework s s dng thuc tnh Default ny gi Action Method Index() trong TimkiemController x l URL ny.

i vi URL /Timkiem/?tenGT=XML&tien=20001. Nu bn mun URL ca chng ta c r rnh hn, minh bch hn th chng ta truyn tham s thng qua mt QueryString, v coi nh l mt tham s trong phn thng s ca URL.
Nguyn Trng Tr Lp HT02

30

Tm hiu m hnh MVC trong lp trnh .NET 2011 Chng ta c th lm cho nhng URL tm kim c p hn bng cch thm quy tc nh x URL trc quy tc mc nh /[controller]/[action]/[id] m Visual Studio to cho chng ta khi to ng dng ny nh di y:

Vi quy tc trn ta xc nh r rng cc thng s Controller v nhng tham s cho Action Method cho URL /Timkiem/. Chng ta ang ch ra rng URL /Timkiem lun lun phi c x l bi Action Method Index() trong TimkiemController. Validation Pre-Conditions for Routing Rules Kim tra cc iu kin cn thit cho mt quy tc nh x Nh ta cp trc trong n ny, lp Route c mt thuc tnh Validation cho php chng ta thm cc iu kin xc nhn trc khi quy tc c MVC Framework nh gi l ph hp (ngoi cc b lc URL) cho mt URL c yu cu n. ASP.NET MVC Framework cho php ta s dng Regular Expression kim tra mi i s trong URL, cng nh cho php ta nh gi cc tiu HTTP. Di y l mt quy tc validation m ta mun ng dng i vi URL nh /Quanly/Editgiaotrinh/1 N quy nh rng cc i s ID phi l mt s (khng chp nhn mt string), v rng n phi c t 1 n 8 k k t:

Nu chng ta c mt URL c yu cu n nh /Quanly/Editgiaotrinh/1 th quy tc nh x trn s c hiu lc. Nu chng ta c mt URL c yu cu n nh

31

Nguyn Trng Tr Lp HT02

Tm hiu m hnh MVC trong lp trnh .NET 2011 /Quanly/Editgiaotrinh/tri hoc /Quanly/Editgiaotrinh/1212121212 th n s khng ph hp. Constructing Outgoing URLs from the Routing System Xy dng cc Outgoing URL t h thng cc quy tc nh x H thng nh x URL trong ASP.NET MVC Framework chu trch nhim v hai iu: nh x cc URL c yu cu n cc Action Method trong cc class Gip xy dng ra cc URL c th c s dng gi v Action Method H thng nh x URL c mt s phng t hc b tr (Helper Method) v cc lp cho n d dng t ng tm kim v xy dng cc URL trong thi gian chy (runtime). Html.ActionLink Helper Method Html.ActionLink. N c th c s dng trong cc thnh phn View v cho php bn t ng to ra siu lin kt <a href="> da trn cc quy tc nh x URL ca chng ta c khai bo trong h thng nh x trong tp tin Global.asax. V d: Controller x l. trong lp Controller.

N t ng chn nhng quy tc nh x ph hp trong ht thng nh x m ta nh ngha trc trong v d ny v s t ng t o ra gi tr href cho cc siu lin kt.

32

Nguyn Trng Tr Lp HT02

Tm hiu m hnh MVC trong lp trnh .NET 2011 Url.Action Ngoi vic s dng Html.ActionLink, ASP.NET MVC cn c mt Helper Method Url.Action() . Helper Method ny to ra chui URL th m bn c th s dng nu bn mun. N s s dng h thng nh x URL gen ra mt chui nh di y (khng c trong th a <a href="> </a>). Controller.RedirectToAction ASP.NET MVC cng h tr mt Helper Method

Controller.RedirectToAction() m ta c th s dng trong iu khin thc hin vic chuyn hng (Redirect) (trong cc URL c xc nh bng cch s dng h thng nh x URL). V d khi m di y c gi trong mt Controller :

th n s tng ng vi Response.Redirect(/ Quanly/danhsachgt) (iu ny qu quen thuc vi chng ta khi lp trnh vi ASP.NET Web Form). im hay nhng Helper Medthod trn l n cho php chng ta trnh cc hard-code trong URL bn trong Controller v . Nu sau ny bn mun thay i quy tc nh x URL t /Search/[query]/[page] sang /Search/Results/[query]/[page] hoc /Search/Results?query= [query]&page=[page]. Chng ta ch cn thay i m ngun mt ni duy nht m khng cn phi thay i thm bt c m ngun no trong cc thnh phn Controller v View ca chng ta. Constructing Outgoing URLs from the Routing System (using Lambda Expressions) - Xy dng cc URL gi i t h thng nh x (s dng biu thc Lambda) Ngoi vic truyn thng s mt cch linh hot bng cch s dng anonymous type, ASP.NET MVC Framework cng h tr kh nng to ra cc nh x bng cch s dng strongly-typed mt c ch cho cho php compile-time checking v intellisense cho URL Helper. l cc biu thc Lambda. 33
Nguyn Trng Tr Lp HT02

Tm hiu m hnh MVC trong lp trnh .NET 2011 V d, ActionLink anonymous type:

C th c vit li nh sau:

Ch : Khi s dng Lambda Expression chng ta khng bao gi thc s thc thi cc Action Method trong SearchController. V d, m di y khng gi Action Method Result:

m ch to ra m HTML ca mt siu lin kt:

Khi ngi dng nhp vo lin kt ny n s gi li mt yu cu http n my ch v s gi Action Method Result ca SearchController. 3.3. Xy dng Controllers Mi ln c mt yu cu c gi n trang web ASP.MET MVC ca bn th n s c gii quyt bi controller. Controllers c trch nhim iu khin cc tng tc ca ngi dng bn trong ng dng MVC. Controllers quyt nh ci g s c chuyn v cho ngi dng khi to mt yu cu (request) trn trnh duyt (browser). Controller c trch nhim cho cc ng dng logic, bao gm tip nhn thng tin ngi dng nhp vo , ra lnh, ly d liu t Model v cui cng l x l. C mt s tng ng gia cc Controller ASP.NET MVC v cc trang ASPX trong ASP.NET Webform. V d, c hai u l cc im tng tc vi ngi dng cui. Tuy nhin trong mt s cch khc, n c cc khi nim kh khc nhau, v d:

34

Nguyn Trng Tr Lp HT02

Tm hiu m hnh MVC trong lp trnh .NET 2011 Ta khng th tch ri trang ASPX vi code x l logic ca n, v c hai n

u hp tc thc hin cc ng dng nht nh. Tuy nhin ASP.NET MVC th li khc , chng tch bit thnh phn giao din vi phn code x l, chnh v th ta c th gi cho code ca mnh c n gin, d hiu, duy tr s c lp cn thit. Trang ASP.NET WebForm ASP c mt lin kt mt - mt vi mt giao din ngi dng c th. Tuy nhin trong ASP.NET MVC, mt b iu khin khng gn lin vi mt giao din ngi dng c th, v vy n c th gii quyt cc yu cu bng cch gi li cc d liu cn thit. Tt nhin l nhng ng dng thc t s gip chng ta hiu r v Controller hn, xem n c th gip chng ta xy dng nhng ng dng mt cch n gin nh th no. Cc lp Controller c bn MVC Framwork i km mt lp c s tiu chun iu khin, System.Web.Mvc.Controller. Bao gm cc thnh phn sau y: Action methods: hnh ng ca chng ta c chia thnh nhiu phng thc, mi phng thc tng ng vi mt a ch URL khc nhau, v c gi vi cc tham s c ly t yu cu. Action results: ta c th ty chn tr v mt i tng m t nhng d nh kt qu ca mt hnh ng (v d c th tr v mt View, n mt Action method khc) v n s thc hin cho chng ta. Vic tch bch gia xc nh kt qu vi vic thc thi s n gin ha vic kim th mt cch ng k. Filters: ta c th rt gn cc hnh vi s dng li c (v d nh chng thc) nh b lc, v sau kha mi hnh vi vo mt hoc nhiu controller hay action moethod bng cch t mt [thuc tnh] trong m ngun ca chng ta. Mt controllers l mt lp (Class) (C# class hoc VB class). Trong v d ng dng ASP.NET MVC Web Application mu lun tn ti 2 controllers l AccountController.cs v HomeController.cs nm trong folder Controllers .

35

Nguyn Trng Tr Lp HT02

Tm hiu m hnh MVC trong lp trnh .NET 2011 HomeController.cs using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.Mvc; namespace Hitest.Controllers { [HandleError] public class HomeController : Controller { public ActionResult Index() { ViewData["Message"] = "Welcome to ASP.NET MVC!"; return View(); } public ActionResult About() { return View(); } } } Trong HomeController.cs c 2 phng thc l Index() v About(). C 2 phng thc ny l 2 action trong controller HomeController.cs, n thc hin khi c gi bng a ch /Home/Index v Home/About. Bt c phng thc no c thuc tnh public u l mt action trong controller. Tm hiu v cc Action Method trong Controler. Sau khi ta to mt lp QuanlyController, ta c th bt u thm cc businness logic x l vic khi ngi dng truy cp vo URL / Quanly/ Danhsachgt ca ng dng. 36
Nguyn Trng Tr Lp HT02

Tm hiu m hnh MVC trong lp trnh .NET 2011 Trong v d ny chng ta s thc hin 3 kch bn cho ng dng Web ca chng ta : Duyt tt c cc danh sch gio trnh Chnh sa thng tin gio trnh Thm gio trnh mi

Chng ta s s dng cc URL sau y x l tng tnh hung: Bng 3.2: X l cc URL nh dng URL /Quanly/Danhsachgt Hnh vi Duyt tt c cc danh sch gio trnh /Quanly/Editgiaotrinh/Magt Chnh sa thng tin gio trnh /Quanly/Creategt Thm mi gio trnh /Quanly/Creategt /Quanly/Editgiaotrinh/1 V d URL /Quanly/Danhsachgt

C mt vi cch chng ta vit lnh (code) trong lp QuanlyController x l ba loi URL c gi n. Mt cch l ta c th np chng (Override) li phng thc Execute trn lp Base Controller v vit cc cu lnh if / else / switch logic bng tay xem cc URL c yu cu n v sau thc hin cc logic thch hp x l n. Mt cch d dng hn nhiu, l s dng tnh nng c tch hp ca MVC Framework cho php chng ta nh ngha Action Method trn Controller, v sau lp Base Controller t ng gi Action Method thch hp thc hin da trn quy tc nh x URL s dng cho ng dng.

37

Nguyn Trng Tr Lp HT02

Tm hiu m hnh MVC trong lp trnh .NET 2011 V d, chng ta s thm 3 Action Method vo class QuanlyController x l cc URL c yu cu n nh sau:

Cc quy tc ca vic nh x URL c cu hnh mc nh khi mt d n mi c to. V vy, nu chng ta nhn c mt yu cu URL /Quanly/Danhsachgt, cc quy tc nh x s x l Danhsachgt l tn ca mt ActionMethod trong QuanlyController, v phng thc Danhsachgt () ny s c gi x l yu cu. Tng t nu chng ta nhn c mt yu cu URL /Quanly/Editgiaotrinh/1, quy tc nh tuyn s x l Editgiaotrinh nh tn ca mt ActionMethod, v phng thc Editgiaotrinh (int id) s c gi x l yu cu, vv nh x URL c tham s n Action Methods trong Controller C nhiu cch ly c tham s trong URL t nhng Action Method ca cc lp Controller . Cc lp Controller ca chng ta c implement (thc thi cc phng thc t mt lp) t mt Base Controller n a ra mt tp hp cc i tng Request (yu cu) v Reponse (p ng) c th c s dng. Nhng i tng ny c chnh xc cng mt cu trc API (Application Programming Interface - giao din lp trnh ng dng) nh l HttpRequest / HttpResponse i tng m bn quen 38
Nguyn Trng Tr Lp HT02

Tm hiu m hnh MVC trong lp trnh .NET 2011 thuc vi trong ASP.NET Web Form . iu khc bit quan trng l cc i tng ny implement (thc thi cc phng thc t mt lp) t cc giao din (interface) thay v cc lp c nim phong khng c tha k (sealed classes). Li ch ca vic c cc giao din (interface) ny l ta d dng mc ni vi chng cho php d dng s dng Unit Testvi cc lp Controller. Di y l mt v d v cch chng ta c th s dng Request API ly mt gi tr chui truy vn ID t bn trong Action Method Editgiaotrinh() ca chng ta trong lp QuanlyController:

ASP.NET MVC Framework cng h tr t ng nh x cc gi tr tham s t URL n Action Method nh nh mt tham s ca Action Method . Theo mc nh nu bn c mt tham s trong Action Method ca bn, MVC Framework s xem xt cc d liu yu cu gi n xem c mt yu cu HTTP tng ng c gi tr cng tn no khng. Nu c, n s t ng chuyn n vo nh mt tham s cho Action Method ca bn. Ngoi ra ASP.NET MVC Framework cng cho php bn s dng URL Routing truyn tham s (v d: thay v Quanly/Editgiaotrinh?id=34 bn c th s dng Quanly/Editgiaotrinh/34). Quy lut nh x tn l Default c khai bo mc nh trong file Global.asax t khi chng ta to Project ny c nh dng /[controller]/[action]/[id]. iu ny c ngha l nu c bt k ng dn URL c yu cu n th hu t sau cng ca n (sau tn ca Controller v tn Action Method) th theo mc nh s c coi nh mt tham s c tn id v c th c t ng truyn vo Action Method ca chng ta nh l mt tham s u vo. T Action Method Detail() cng s nhn c tham s ID t ng dn URL (v d: /Quanly/Editgiaotrinh/1): 39
Nguyn Trng Tr Lp HT02

Tm hiu m hnh MVC trong lp trnh .NET 2011 Di y l mt lp QuanlyController ca em by gi c cc Action Method c th x l tng URL c yu cu vi cc tham s cn thit: public ActionResult Danhsachgt() { } [HttpGet] public ActionResult Creategt() { return View(); } [HttpPost] public ActionResult Creategt([Bind(Exclude = "Ma_giao_trinh")]Giao_trinh gt) { } [HttpGet] public ActionResult Editgiaotrinh(int id) { } [HttpPost] public ActionResult Editgiaotrinh(Giao_trinh gt) { } Tham s ty chn trong MVC Framework c s dng theo kiu d liu nullable trong Action Method ca chng ta. V tham s ch mc trn Action Method Editgiaotrinh() l mt bin int (c c php khai bo l int?), nn MVC Framework s b qua gi tr ny nu n khng c mt trong URL v s truyn vo Action Method ca ta nu n c mt trong URL. Cc loi Action Result Bng 3.3: Cc loi Action Result Cc kiu tr v ViewResult Mc ch Hin th mt View mi hoc trang mc nh. Tr v mt View mi hoc V d v s dng Return View(); Return View("MyView", modelObject); Return PartialView();
Nguyn Trng Tr Lp HT02

PartialViewResul 40

Tm hiu m hnh MVC trong lp trnh .NET 2011 t mc nh cc b. Return PartialView("MyPartial", modelObject); RedirectToRoute Result Tr v mt Action method mi ReturnRedirectToAction("SomeO therAction", "SomeController"); ReturnRedirectToRoute("MyNam edRoute"); RedirectResult ContentResult FileResult Chuyn ti mt a ch khc Tr v d liu th vn bn n trnh duyt Truyn d liu nh phn (chng hn nh tp tin t a) trc tip n trnh duyt. Chuyn i mt i tng sang kiu Json v tr v nh mt phn hi. Gi mt on m ngun JavaS cript cn phi c thc hin bi trnh duyt. y ch dng s dng trong cc kch bn Ajax ReturnRedirect("http://www.exam ple.com"); ReturnContent(rssString, "application/rss+xml"); Return File(@"c:\report.pdf", "application/pdf");

JsonResult

ReturnJson(someObject);

JavaScriptResult

ReturnJavaScript("$('#myelem').hi de();");

HttpUnauthorized Thit lp trng thi phn Result ng HTTP m 401 (c ngha l "khng c u quyn"), m nguyn nhn c ch xc thc hot ng (Hnh thc xc thc hoc Windows Authe ntication) l yu cu ngi truy cp phi ng nhp. EmptyResult Khng tr v ci g.

Return new HttpUnauthorizedResult();

Return new EmptyResult();

41

Nguyn Trng Tr Lp HT02

Tm hiu m hnh MVC trong lp trnh .NET 2011 3.4. Xy dng Model Hin ti chng ta c mt lp QuanlyController v ba Action Method sn sng x l yu cu trang web gi n. Bc tip theo s l xy dng mt s lp gip chng ta lm vic vi c s d liu, ly cc d liu thch hp cn thit x l cc yu cu web. Trong mt ng dng ASP.NET MVC, Model l cc thnh phn c trch nhim duy tr trng thi ca cc i tng, thng thng n l mt lp nh x n mt bng trong c s d liu (v d: chng ta c mt lp Giao_trinh c s dng m t bng Giao_trinh bn trong c s d liu SQL ca chng ta). ASP.NET MVC Framework cho php bn s dng bt k m hnh truy cp d liu no bn mun thao tc, qun l d liu ca bn. Bn c th s dng ADO.NET DataSets / DataReaders, hoc nu bn thch s dng mt m hnh nh x i tng quan h (ORM) nh NHibernate, LLBLGen, WilsonORMapper, LINQ to SQL / LINQ To Entities. i vi ng dng mua sch ny chng ta s s dng LINQ to SQL class. Ta s bt u bng cch phi chut trn th mc, Model trong d n web MVC ca chng ta trong VS v chn Add New Item thm mt m hnh LINQ to SQL . Ta to mt lp Giao_trinh.cs.Trong lp ny ta s khai bo cc thuc tnh ca bng Giao_trinh, mc ch l s to ra mt lp trung gian gia c s d liu v Controller:

42

Nguyn Trng Tr Lp HT02

Tm hiu m hnh MVC trong lp trnh .NET 2011

Nh vy l chng ta c tt c d liu m ta cn cho lp QuanlyController. Tip theo chng ta hy tin hnh ci t lp QuanlyController. Ci t lp QuanlyController Controller trong mt ng dng MVC c trch nhim x l cc yu cu gi n, x l v tng tc ca ngi dng, v thc hin logic thch hp (truy xut v cp nht d liu c lu tr trong mt c s d liu, vv) Controller trong mt ng dng MVC khng tr v mt HTML c th nh ASP.NET Web Form m nhim v to ra HTML c thc hin bi cc thnh phn View trong ng dng mt cch ring bit. View ch lo vic trnh by d liu, v khng cha bt k buiness logic hoc code truy cp c s d liu no (m thay vo chng c x l bi cc Controller ). Trong mt quy trnh lm vic web MVC , cc Action Method trong Controller s x l cc yu cu web c yu cu n, s dng cc gi tr tham s n thc thi cc buiness logic, truy xut hoc cp nht cc i tng m hnh d liu t c s d liu, v sau chn mt View render v mt giao din ngi dng thch 43
Nguyn Trng Tr Lp HT02

Tm hiu m hnh MVC trong lp trnh .NET 2011 hp v Reponse v cho trnh duyt. Controller s truyn mt i tng d liu Strongly Typed n View cho n c th render mt giao din ph hp:

Hnh 3.6: M hnh hot ng ca MVC Ta c th t hi li ch ca vic tch Controller v View nh th ny l nhng g ? Ti sao khng t chng trong cng mt class ? ng lc chnh trong phn vng cc ng dng nh th ny l gip cho vic Unit Testing c d dng, lm cho m ngun ng dng ca chng ta trong sng hn, r rng hn t s lm cho ng dng ca chng ta d bo tr hn theo thi gian. Khi ci t ba Action Method ca class QuanlyController ca chng ta, em s s dng cc gi tr tham s URL n ly cc m hnh i tng thch hp t c s d liu, v sau chn mt thnh phn View v li mt Reponse HTML thch hp. Chng ta s s dng phng thc RenderView () trong lp Base Controller xc nh xem chng ta mun s dng cng nh truyn vo mt d liu c th m chng ta mun xem. Di y l kt qu cui cng lp QuanlyController ca chng ta: public ActionResult Danhsachgt() { var gt = csdl.Giao_trinhs; return View(gt.ToList()); } [HttpGet] public ActionResult Creategt() { return View(); 44
Nguyn Trng Tr Lp HT02

Tm hiu m hnh MVC trong lp trnh .NET 2011 } [HttpPost] public ActionResult Creategt([Bind(Exclude = "Ma_giao_trinh")]Giao_trinh gt) { if (ModelState.IsValid) { csdl.Giao_trinhs.InsertOnSubmit(gt); csdl.SubmitChanges(); return RedirectToAction("danhsachgt"); } return View(gt); } [HttpGet] public ActionResult Editgiaotrinh(int id) { var editgt = csdl.Giao_trinhs.Select(p => p).Where(p => p.Ma_giao_trinh == id).FirstOrDefault(); return View(editgt); } [HttpPost] public ActionResult Editgiaotrinh(Giao_trinh gt) { var gtrinh = csdl.Giao_trinhs.Select(p => p).Where(p => p.Ma_giao_trinh == gt.Ma_giao_trinh).FirstOrDefault(); gtrinh.Ma_giao_trinh = gt.Ma_giao_trinh; gtrinh.Ten_giao_trinh = gt.Ten_giao_trinh; gtrinh.Gia_tien = gt.Gia_tien; csdl.SubmitChanges(); return RedirectToAction("Danhsachgt"); }

3.5.

To giao din ngi dng vi View Chng ta hon tt vic trin khai thc hin v th nghim cc ng dng ca

ng dng mua bn gio trnh. By gi chng ta cn phi thc hin cc giao din ngi dng HTML cho n.

45

Nguyn Trng Tr Lp HT02

Tm hiu m hnh MVC trong lp trnh .NET 2011 Chng ta s lm iu ny bng cch ci t View to ra mt giao din ngi dng thch hp khi gi RenderView () :

Trong on m v d trn tham s Danhsachgt ca RenderView() ch l tn ca mt View m chng ta mun render, v tham s th hai l mt i tng danh sch cc danh mc sn phm c th m chng ta mun truyn vo i tng View s dng nh l d liu to ra HTML thch hp cho vic tao giao din ngi dng . Cc ASP.NET MVC Framework h tr kh nng s dng bt k cng c khun mu gip ta to ra cc giao din ngi dng (bao gm c cc cng c template hin c ging nh NVelocity, Brail cng nh nhng template mi m bn t vit). Theo mc nh cc ASP.NET MVC Framework hin ti s dng trang ASP.NET (.aspx), Master Page (.master), v UserControl (.ascx) c h tr trong ASP.NET. Chng ta s s dng cng c xy dng giao din ngi dng ca ASP.NET thc hin cho ng dng mua gio trnh ca chng ta. nh ngha mt File Site.Master Cng dng ca trang Master Page chng ta bit n ASP.NET Web Form trc y, n ny s khng cp n. Mc nh th khi ta to Project MVC th c sn mt Site.Master trong folder Share.

46

Nguyn Trng Tr Lp HT02

Tm hiu m hnh MVC trong lp trnh .NET 2011

Hnh 3.7: Giao din trang Master.Page Tm hiu cu trc th mc View Theo mc nh khi ta to ra mt d n ASP.NET MVC mi bng cch s dng Visual Studio, n s to ra mt th mc Shared bn trong th mc gc View . y l ni c ngh lu tr Master Pages, UserControl , v Views m ta mun dng nhiu ni trong ng dng. Khi xy dng thnh phn View c th i vi mt Controller, mc nh ASP.NET MVC s lu tr chng trong th mc con trong th mc gc View. Theo mc nh, tn ca mt th mc con phi tng ng vi tn iu khin. V d , bi v 47
Nguyn Trng Tr Lp HT02

Tm hiu m hnh MVC trong lp trnh .NET 2011 Controller chng ta xy dng c gi l QuanlyController, mc nh cc View ca QuanlyController s c lu tr trong th mc con tn l Quanly:

Hnh 3.9: View Quanly Khi chng ta gi (invoke) cu lnh RenderView(string viewName ) trong mt Controller , MVC Framework s t ng tm mt View template tng ng .Aspx hoc .Ascx trong ng dn /View/ControllerName, nu khng th tm thy View no thch hp th ASP.NET MVC Framework s tm trong t h mc /View/Shared.

48

Nguyn Trng Tr Lp HT02

Tm hiu m hnh MVC trong lp trnh .NET 2011 To mt Danhsachgt View Chng ta c th to ra View Danhsachgt cho QuanlyController trong Visual Studio bng cch click phi chut chn Add New Item trn th mc Quanly v chn MVC View Page. Chng ta s c mt trang aspx mi v c th ty chn lin kt vi trang ch Site.Master. Khi xy dng ng dng bng cch s dng mt m hnh MVC , ta mun gi cho m ngun View n gin, v chc chn rng m ngun View ch n thun lm vic biu din UI cho ngi dng. Cc x l v Buiness logic ch nn t trong cc lp Controller. Controller s x l, chn View thch hp v truyn nhng d liu cn thit vo View biu din ra UI cho ngi dng (c thc hin khi gi RederView() ). V d, di y trong Action Method Danhsachgt ca class QuanlyController, ta truyn vo Danhsachgt View mt i tng var gt = csdl.Giao_trinhs Categories View thc hin vic hin th d liu da vo i tng gt

MVC

View Page

mc

nh c

tha t cc

lp c

System.Web.Mvc.ViewPage, cung cp mt s phng thc Helper v cc Properties m chng ta c th s dng trong vic xy dng giao din ngi dng. V y l kt qu:
<%@ Page Title="" Language="C#" MasterPageFile="~/Views/Shared/Site.Master" Inherits="System.Web.Mvc.ViewPage<IEnumerable<Totnghiep.Models.Giao_trinh>>" %> <asp:Content ID="Content1" ContentPlaceHolderID="TitleContent" runat="server"> Danh sch gio trnh </asp:Content> <asp:Content ID="Content2" ContentPlaceHolderID="MainContent" runat="server"> <center>

49

Nguyn Trng Tr Lp HT02

Tm hiu m hnh MVC trong lp trnh .NET 2011


<div class="top"></div> <center ><div class="center"><doc>Danh sch gio trnh</doc></div> </center> <div class="bottom"></div> </center> <hr /> <table width =722px> <tr> <th style="background-color:#2D8ECE; color :White ">Thao tc</th> <th style="background-color:#2D8ECE; color :White ">Tn gio trnh</th> <th style="background-color:#2D8ECE; color :White ">Gi tin</th> </tr> <% foreach (var item in Model) { %> <tr> <td> <%: Html.ActionLink("Chnh sa", "Editgiaotrinh", new { id=item.Ma_giao_trinh }) %> | <%: Html.ActionLink("Xa", "Deletegt", new { id=item.Ma_giao_trinh })%> </td> <td> <%: item.Ten_giao_trinh %> </td> <td> <%: item.Gia_tien %> </td> </tr>

<% } %>

</table> <p> <%: Html.ActionLink("Thm mi", "Creategt") %> </p> </asp:Content>

50

Nguyn Trng Tr Lp HT02

Tm hiu m hnh MVC trong lp trnh .NET 2011

Hnh 3.10: Danh sch gio trnh 3.6. Truy nhp d liu vi LINQ LINQ (Language Integrate Query) l s sng to mi trong .Net Framework 3.5, l mt tp m rng ngn ng cho php thc hin cc truy vn trong ngn ng C# 2008 v VisualBasic 2008. LINQ cho php Select (chn), Filter (lc), Sort (phn loi), Group (nhm) v tranfom data (chuyn d liu) t cc ngun data source (d liu ngun) khc nhau theo mt cch chung. LINQ to Objects thc hin truy vn cc i tng. LINQ to DataSet thc hin truy vn DataSet. LINQ to SQL thc hin truy vn n c s d liu SqlServer m khng phi vit code. LINQ to XML c d liu t XML. V d, nu em khng dng LINQ, th mun ly tt c cc gio trnh th em vit m lnh nh sau:

51

Nguyn Trng Tr Lp HT02

Tm hiu m hnh MVC trong lp trnh .NET 2011 Tuy nhin nu s dng LINQ th m lnh nh sau:

Nh vy th vi vic s dng LINQ, cu lnh truy vn tr nn gn gng hn rt nhiu, v y l kt qu:

Hnh 3.11: Danh sch gio trnh

52

Nguyn Trng Tr Lp HT02

Tm hiu m hnh MVC trong lp trnh .NET 2011

PHN 4 BO MT VI ASP.NET MVC APPLICATION


C nhiu phng php xc thc ngi dng nh Windows Authentication, Forms Authentication. Tuy nhin trong chng ny em ch trnh by xc thc da trn Forms Authentication, gii thch cch s dng Forms Authentication yu cu bng password cho cc View. S dng Website Administration Tool to ngi dng v phn nhm ngi dng, ngn chn nhng ngi ngi tri php. To ngi dng vi ASP.NET MVC Application Mc nh khi ng dng c to s c sn mt Controller c tn AccountController.cs v c cc View tng ng ChangePassword.aspx,

ChangePasswordSuccess.aspx, Login.aspx, Register.aspx.

Hnh 4.1: Qun l ngi dng

53

Nguyn Trng Tr Lp HT02

Tm hiu m hnh MVC trong lp trnh .NET 2011 View th hin vic ng k mt ngi dng mi nh sau:

Hnh 4.2: ng k ti khon mi Qun l ngi dng vi cng c Website Administration Tool Chn menu Project -> ASP.NET Configuration. Xut hin cng c Website Administration Tool, chn Tab Security

Hnh 4.3: Trang qun tr ngi dng

54

Nguyn Trng Tr Lp HT02

Tm hiu m hnh MVC trong lp trnh .NET 2011 Click v Create User to ngi dng, y em v d to ngi dng tn Tri:

Hnh 4.4: To user Phn quyn nhm ngi dng (Rules) to role trc ht phi enable role bng cch click vo link Enable roles sau click vo Create and Manage roles -> to role c tn Quantri.

Hnh 4.5: Thm quyn mi

55

Nguyn Trng Tr Lp HT02

Tm hiu m hnh MVC trong lp trnh .NET 2011 By gi ta gn quyn cho user Tri mi to

Hnh 4.6: Gn quyn cho user Ta p dng vo Controller ca chng ta nh sau:

Nh vy khi mun thc hin chc nng Delete gio trnh, bt buc ngi dng phi ng nhp vi quyn Quantri.

56

Nguyn Trng Tr Lp HT02

Tm hiu m hnh MVC trong lp trnh .NET 2011

PHN 5 CHNG TRNH NG DNG


5.1. M t chng trnh ng dng Kho st hin trng Trung tm thng tin t liu l mt phng chc nng thuc trng Vit hn. Trung tm c chc nng cung cp cc gio trnh, t liu phc v vic hc tp, nghin cu ca sinh vin v ging vin trong trng. Nhm minh ha cho phn gii thiu l thuyt v ASP.NET MVC, v qua thc t l hin nay vic mua gio trnh ca trng hin vn cn th cng. Em tm hiu v chn ti l xy dng website ng k mua gio trnh trc tuyn da trn m hnh ASP.NET MVC nhm mc ch l gip cho sinh vin ca trng c th tin hnh vic mua gio trnh mt cch d dng v nhanh chng nht. Vo u mi hc k, th vin thng yu cu sinh vin ng k mua gio trnh phc v cho vic hc tp. Tuy nhin vic ng k ch c thc hin trn giy t, th vin pht giy ng k cho lp trng v sau thu li. Vic ng k th cng ny gy mt thi gian ca sinh vin ln ca th vin, v th vic c mt website ng k mua gio trnh trc tuyn l mt xut ph hp vi tnh hnh hin nay ca trng. Xc lp d n Vic ng k mua gio trnh m mt cng vic c quy m nh, nhng phc tp. V th, trong chng trnh ng dng ny ( c xy dng vi mc tiu l minh ha cho cc l thuyt c nu ra trong cc chng trn), em s gii hn li phc tp ca chng trnh. Sinh vin sau khi ng k th s thc hin vic mua gio trnh, v trung tm s thc hin vic xc nhn thng tin v cng cp gio trnh cho sinh vin.

57

Nguyn Trng Tr Lp HT02

Tm hiu m hnh MVC trong lp trnh .NET 2011 Quy trnh hot ng ca website V pha trung tm: Qun l vic cp nht gio trnh, khoa. Qun l vic ng k mua ca sinh vin. V pha sinh vin: Tin hnh chn la gio trnh da trn cc khoa tng ng. Tin hnh in cc thng tin c n thit v cp nhp thng tin. Quy trnh nghip v Quy trnh ng k mua sch
Bt u

Quy trnh xc nhn mua gio trnh


Bt u

ng nhp ng nhp thnh cng Chn gio trnh theo khoa

ng nhp ng nhp thnh cng Xc nhn mua gio trnh

Thc hin chc nng mua giotrnh

Kt thc

Kt thc

58

Nguyn Trng Tr Lp HT02

Tm hiu m hnh MVC trong lp trnh .NET 2011 M hnh c s d liu

Hnh 5.1: M hnh c s d liu

59

Nguyn Trng Tr Lp HT02

Tm hiu m hnh MVC trong lp trnh .NET 2011 5.2. Hnh nh cc chc nng chnh ca trang website Trang ch: y l trang ch ca website, s xut hin trc tin khi ngi

dng truy cp vo.

Hnh 5.2: Trang ch website Trang qun l khoa: y l trang dng hin thng tin danh sch cc khoa

ca trng, trung tm c th trc tip thm, xa khoa ti trang ny.

Hnh 5.3: Trang qun l cc khoa 60


Nguyn Trng Tr Lp HT02

Tm hiu m hnh MVC trong lp trnh .NET 2011 Trang qun l gio trnh: Trang dng hin th danh sch cc gio trnh,

ng thi trung tm c th xa gio trnh trc tip ti y. Ti trang ny, trung tm c th chuyn ti cc trang nh chnh sa gio trnh, thm gio trnh.

Hnh 5.4: Trang qun l thng tin gio trnh

Hnh 5.5: Trang thm gio trnh

61

Nguyn Trng Tr Lp HT02

Tm hiu m hnh MVC trong lp trnh .NET 2011

Hnh 5.6: Trang sa thng tin gio trnh Trang ng k mua gio trnh: Ti trang ny, sinh vin c th lc gio trnh

theo khoa, chn gio trnh, in thng tin sinh vin v cui cng l hon thnh vic ng k mua gio trnh.

Hnh 5.7: Trang ng k mua gio trnh

62

Nguyn Trng Tr Lp HT02

Tm hiu m hnh MVC trong lp trnh .NET 2011

KT LUN V HNG PHT TRIN


Kt lun Sau gn 3 thng nghin cu v xy dng, cui cng em cng hon thnh bn bo co nghin cu l thuyt v chng trnh demo. V bo co l thuyt, em trnh by nhng kin thc c bn nht ca ASP.NET MVC, tuy cha y nhng kin thc, nhng em ngh rng nhng g em trnh by trong n l nhng kin thc nn tng v quan trng mi ngi c th tip tc tm hiu nhng kin thc su v mi hn. V chng trnh demo, mc d quy m chng trnh khng ln, chc nng n gin. Nhng nhng kin thc thng dng nht ca ASP.NET MVC em hu nh a vo ht, ngoi ra cn c mt s kin thc nng cao khc. Vi demo ny, tuy cha th p dng vo thc t c, nhng em tin rng y s l mt chng trnh tham kho rt tt cho nhng bn mun hc ASP.NET MVC. Hng pht trin Em s b sung thm nhiu chc nng hn na, ng thi c gng website c th ng dng c vo thc t ti trung tm thng tin t liu trng Vit Hn.

63

Nguyn Trng Tr Lp HT02

Tm hiu m hnh MVC trong lp trnh .NET 2011

TI LIU THAM KHO


[1] Ebook: Wrox - Professional ASP.NET MVC. [2] Website : http://www.asp.net/mvc. [3] Website: http://weblogs.asp.

64

Nguyn Trng Tr Lp HT02

You might also like