Upload
huatrung17
View
140
Download
0
Embed Size (px)
Citation preview
B GIO DC V O TO
I HC CNG NGH TP.HCM
LP TRNH NG DNG
WEB
Bin son: GV.Mai Ngc Thu
Website: http://www.hutech.edu.vn
LP TRNH NG DNG WEB
n bn 2013
MC LC I
MC LC MC LC .................................................................................................................... I
HNG DN .............................................................................................................III
BI 1. ASP.NET ........................................................................................................... 1
1.1 TNG QUAN ASP.NET ............................................................................................. 1
1.2 TNH NNG MI TRONG ASP.NET ............................................................................ 4
1.3 TO TRANG WEB VI VISIUAL STUDIO ..................................................................... 5
1.4 CC S KIN TRONG ASP.NET ................................................................................. 9
TM TT .................................................................................................................. 12
BI TP ................................................................................................................... 13
BI 2. CC LP S DNG TRONG ASP.NET ............................................................... 15
2.1 HTTP REQUEST ................................................................................................... 15
2.2 HTTP RESPONSE .................................................................................................. 20
2.3 HTTP SERVER ...................................................................................................... 21
2.4 SESSION V COOKIE ........................................................................................... 22
TM TT .................................................................................................................. 25
BI TP ................................................................................................................... 26
BI 3. TRUY CP D LIU ......................................................................................... 29
3.1 TNG QUAN ........................................................................................................ 29
3.2 TRUY CP D LIU ADO.NET ................................................................................. 31
3.3 TRUY CP D LIU XML ........................................................................................ 32
3.4 SQLDATASOURCE ................................................................................................ 33
3.5 TRUY CP D LIU LINQ ....................................................................................... 35
TM TT .................................................................................................................. 40
BI TP ................................................................................................................... 40
BI 4. LP TRNH GIAO DIN WEB VI JQUERY ....................................................... 42
4.1 JQUERY L G? .................................................................................................... 42
4.2 LP TRNH VI JQUERY ........................................................................................ 45
TM TT .................................................................................................................. 52
BI TP ................................................................................................................... 53
BI 5. TNG QUAN V ASP.NET MVC FRAMEWORK ................................................... 54
II MC LC
5.1 TNG QUAN ASP.NET MVC ..................................................................................... 54
5.2 XY DNG NG DNG VI ASP.NET MVC ................................................................. 58
5.3 NH TUYN URL .................................................................................................. 61
TM TT ................................................................................................................... 64
BI TP .................................................................................................................... 65
BI 6. MODEL VIEW CONTROLLER ....................................................................... 66
6.1 TM HIU V CONTROLLER ..................................................................................... 66
6.2 TM HIU V VIEW ................................................................................................ 69
6.3 TM HIU V MODEL ............................................................................................. 71
6.4 CU TRC VIEWS\SHARE\SITE.MASTER .................................................................. 74
TM TT ................................................................................................................... 75
BI TP .................................................................................................................... 76
BI 7. CP NHT D LIU VI MVC .......................................................................... 77
7.1 THM MI D LIU TRONG MVC ............................................................................. 77
7.2 SA I D LIU TRONG MVC ............................................................................... 81
7.3 QUY TRNH KIM TRA TRONG NG DNG MVC .......................................................... 87
TM TT ................................................................................................................... 92
BI TP .................................................................................................................... 93
BI 8. TH C HIN B O MT CHO NG DNG ASP.NET MVC ...................................... 94
8.1 AUTHENTICATION - XA C TH C NGI DU NG ........................................................... 94
8.2 CU HNH VIC XC TH C NGI DNG ............................................................... 101
TM TT ................................................................................................................. 104
BI TP .................................................................................................................. 106
TI LIU THAM KHO ............................................................................................... 107
HNG DN III
HNG DN
M T MN HC
Mn hc trang b cc kin thc nhp mn v lp trnh web. Ni dung bao gm:
- Asp.net web form
- Http request POST/GET
- Http response
- Lp trnh vi Session/cookie
- Lp trnh c s d liu: ADO.NET, Linq
- Asp.net MVC
- Model View Controller
- Bo mt vi Asp.net Membership
NI DUNG MN HC
Bi 1. Gii thiu tng quan v ASP.NET.
Bi 2. Cc lp th vin trong ASP.NET
Bi 3. Truy cp d liu
Bi 4. jQuery.
Bi 5. Tng quan v ASP.NET MVC Framework..
Bi 6. Model View - Controller.
Bi 7. Chnh sa d liu vi MVC.
Bi 8. Bo mt vi ASP.NET Membership
KIN THC TIN
IV HNG DN
Mn Lp trnh web cn kin thc tin ca cc mn hc sau.
- Thit k web
- Lp trnh hng i tng
- Lp trnh C# trn windows
YU CU MN HC
Ngi hc vn dng c kin thc nn tng v lp trnh web c th thit k
ci t cc ng dng web, nh qun l website, h qun tr ni dung, ng dng
thng mi in t, cc dch v web.
K nng lp trnh, v phn tch thit k ng dng thnh tho.
Ngi hc cn i hc y , c cc ni dung s c hc trc khi n lp,
lm cc bi tp v nh v m bo thi gian t hc nh.
CCH TIP NHN NI DUNG MN HC
hc tt mn ny, ngi hc cn c trc cc ni dung cha c hc trn lp;
tham gia u n v tch cc trn lp; hiu cc khi nim, tnh cht v v d ti lp
hc. Sau khi hc xong, cn n li bi hc v lm cc bi tp, cu trc nghim. Tm
c thm cc ti liu khc lin quan n bi hc v lm thm bi tp.
PHNG PHP NH GI MN HC
Mn hc c nh gi gm hai thnh phn.
Phn im qu trnh chim 30%, hnh thc v ni dung nh gi im qu trnh do
ging quyt nh v cng b cho ngi hc u kha hc.
Phn im cui kha chim 70%, hnh thc l n mn hc cui kha.
BI 1. ASP.NET 1
BI 1. ASP.NET
Hc xong bi ny ngi hc s nm c cc ni dung sau:
Hiu c tng quan v cng ngh ASP.NET, Khi nim v ASP.NET.
Bit c nhng tnh nng mi ca ASP.NET 3.5 so vi ASP.NET 2.0.
Bit cch to website trong Visual Studio 2008.
1.1 TNG QUAN ASP.NET
1.1.1 Gii thiu
Trc ht, tn y ca ASP.NET l Active Server Pages .NET (.NET y l
.NET framework). Ni n gin th ASP.NET l mt cng ngh c tnh cch mng dng
pht trin cc ng dng v mng hin nay cng nh trong tng lai. ASP.NET l
mt phng php t chc hay khung t chc (framework) thit lp cc ng dng
mnh cho mng da trn CLR (Common Language Runtime).
1.1.2 ASP.NET tch hp vi Framework
.NET Framework c chia thnh b cc tc v cho tng chc nng gm cc lp
(class), cc cu trc (structures), cc giao din (interfaces) v cc li (core) thnh
phn chng trnh. Trc khi s dng thnh phn no ta phi hiu c bn v chc
nng, cc t chc ca n. Mi mt trong hng nghn cc tng lp c nhm theo
trnh t logic, th bc c gi l mt namespace. Mi namespace cung cp mt
tnh nng.
1.1.3 Tnh a ngn ng
xy dng mt ng dng web chng ta khng ch chn mt ngn ng m c th
chn nhiu ngn ng khc. iu quan trng l cc ngn ng chng ta chn m ca
2 BI 1. ASP.NET
n dch c ra m IL. iu c ngha l IL l ngn ng ca .NET v ch c CLR
nhn bit c IL.
1.1.4 Tnh hng i tng
ASP.NET l ngn ng lp trnh hng i tng s dng cc ngn ng .NET. N
cung cp b cc i tng nh v thc s l mt tng lm vit trn nguyn l ca
HTTP v HTML. M ngun ca chng ta khng c truy cp ton b cc i tng
trong .NET Framework nhng c th khai thc tt c cc quy c ca mt mi trng
OOP (Object Oriented Programming). Chng ta c to cc lp, giao din, k tha cc
lp ... Chng ta c th kim sot c cc i tng trong chng trnh nh hin th
d liu v cc s kin ca i tng.
1.1.5 Bin dch ASP.NET
Mt ng dng ASP.NET lun lun c bin dch, n khng chy bng m ca C#
hoc Visual Basic m khng c bin dch trc. Mt ng dng ASP.NET thc s
c bin dch thng qua 2 giai on:
Giai on u tin nhng cc m (code) ta vit (C#, Visual Basic hoc ngn ng
.NET khc) c dch bi Microsoft Intermediate Language (MSIL). Giai on dch
ny c dch t ng khi trang wed u tin yu cu. Chng ta c th thc hin dch
trc. Cc tp tin c dch thnh m IL (Intermediate Language Code).
Giai on tip theo c dch trc khi trang Web c thc thi. Ti giai on
ny m IL c dch thnh bn m my (Native Machine Code). Giai on ny c
gi l Just-In-Time (JIT).
BI 1. ASP.NET 3
Hnh 1.1. Kin trc .Net Framework
Kha cnh quan trng nht ca cng c ASP.NET l n chy trong mi trng thi
gian thc (Runtime) ca CLR (Common Language Runtime). CLR l my o (virtual
machine) trong Microsoft .NET, do c ngn ng trung gian IL nn khi pht trin ng
dng trn .NET, chng ta khng b ph thuc vo thit b, c ngha l theo Microsoft
ni th ng dng .NET c th chy trn bt k thit b no c .NET Framework. Tt c
cc namespace, cc ng dng, cc lp trong b .NET Framework c gi tt l b
qun l m. CLR cng cung cp cc dch v quan trng khc nh:
Qun l b nh
Thu nht rc
Qun l cc tuyn
X l ngoi l
An ton
1.1.6 D dng trin khai v cu hnh
Mi s ci t .NET Framework u cung cp cc lp nh nhau. trin khai ng
dng ASP.NET chng ta ch cn sao chp cc tp tin vo th mc o trn my ch
(server) v my ch ch cn c .NET Framework.
4 BI 1. ASP.NET
Vic cu hnh d dng n gin khng ph thuc vo IIS (Internet Information
Services). Cu hnh trong ASP.NET c t trong tp tin web.config. Tp tin
web.config c cng vi th mc cha trang web ca chng ta. Tp tin
web.config khng bao gi b kha, chng ta c th truy cp bt k lc no, vic sa
tp tin ny hon ton d dng v chng c lu di dng XML.
1.2 TNH NNG MI TRONG ASP.NET
Microsoft pht hnh ASP.NET vo ngy 19 thng 11 nm 2007 cng vi Visual
Stutio 2008. y l bc tin ha t ASP.NET 2.0 ti ASP.NET 3.5. Nu chng ta
ang s dng ASP.NET 2.0 s dng ASP.NET 3.5 ch cn ci t thm cc tnh
nng mi ca ASP.NET 3.5. Trong phn ny ta s gii thiu mt s tnh nng mi
trong ASP.NET 3.5
1.2.1 Cc cng c iu khin mi
Cc cng c (control) ListView v DataPager c th dng mi kiu d liu mi
LinqDataSource.
ListView linh hot hn v c cha ton b tnh nng ca Gridview, Datagrid,
Repeater trong ASP.NET 2.0. N cung cp cc kh nng v chn, xa, sa, sp xp,
phn trang. Chng ta hon ton nh dng c vic d liu hin th trn ListView
m khng cn phi s dng th . Cc Template trong ListView rt phong
ph v a dng. Datager cung cp cho ListView trong vic phn trang.
1.2.2 LINQ
LINQ (Language Integrated Query) cung cp kh nng lp trnh mi trong .NET l
gii php lp trnh hp nht, em n kh nng truy vn d liu theo c php SQL
trc tip trong C# hay VB.NET, p dng cho tt c cc dng d liu t i tng n
C s d liu quan h v XML.
1.2.3 Cc Assembly mi
System.Core.dll: Cc ci t cho LINQ to Objects
BI 1. ASP.NET 5
System.Data.Linq.dll: Cc ci t cho LINQ to SQL
System.Xml.Linq.dll: Cc ci t cho LINQ to XML
System.Data.DataSetExtensions.dll
Cc hin thc cho LINQ n DataSet
System.Web.Extensions.dll: Cc ci t for ASP.NET AJAX
1.2.4 ASP.NET MVC (Model View Control)
Kin trc MVC l vic chia tt c mc ca mt ng dng ra lm ba thnh phn
(component) khc nhau Model, View v Controller:
Model: Model c giao nhim v cung cp d liu cho c s d liu v lu d
liu vo cc kho cha d liu. Tt c cc nghip v logic c thc thi Model. D
liu vo t ngi dng s thng qua View c kim tra Model trc khi lu vo c
s d liu. Vic truy xut, xc nhn, v lu d liu l mt phn ca Model.
View: View hin th cc thng tin cho ngi dng ca ng dng v c giao
nhim v cho vic nhn cc d liu vo t ngi dng, gi i cc yu cu n b iu
khin, sau l nhn li cc phn hi t b iu khin v hin kt qu cho ngi
dng. Cc trang HTML, JSP, cc th vin th v cc tp tin ngun l mt phn ca
thnh phn View.
Controller: Controller l tng trung gian gia Model v View. Controller c
giao nhim v nhn cc yu cu t pha my khch. Mt yu cu c nhn t my
khch c thc hin bi mt chc nng logic thch hp t thnh phn Model v sau
sinh ra cc kt qu cho ngi dng v c thnh phn View hin th.
1.3 TO TRANG WEB VI VISIUAL STUDIO
1.3.1 To d n mi
Chng ta kch hot ng dng Visual Studio (h1.2).
6 BI 1. ASP.NET
Hnh 1.2. To mi d n
Nu chn New Project xut hin hp hi thoi New Project (h1.3)
Trong Project Type:
o Visual Basic Web nu chn Visual Basic l ngn ng vit ng dng.
o Visual C# Web nu chn C# l ngn ng vit ng dng.
Trong Templates chn ASP.NET Web Application,.
Trong Name t tn cho Project, tn do ta t.
Trong Location l th mc cha Project.
o Nu chn New Web Site xut hin hp hi thoi New Project sau.
Trong Languge:
o Visual Basic Web nu chn Visual Basic l ngn ng vit ng dng.
o Visual C# Web nu chn C# l ngn ng vit ng dng.
Trong Templates chn ASP.NET Web Application.
Trong Location chn tn v th mc cha Project.
BI 1. ASP.NET 7
Hnh 1.3. Chn ng dng Web form application
1.3.2 V d
Hnh 1.4. To d n dng Web form
8 BI 1. ASP.NET
V d ta to mt d n c tn l ViDu1, t ti a D, chn ngn ng chn l C#
(h1.5) sau bm OK. Sau chng ta c tp tin Default.aspx
Hnh 1.5. ViDu1 project
Trong v d u tin ny chng ta son mt on m sau trong Default.aspx:
Cho mng bn n vi ASP.NET
BI 1. ASP.NET 9
3.5
thc thi ng dng web ny di dng Debug, chng ta chn Deburg Start
Debugging hoc bm phm F5.
1.4 CC S KIN TRONG ASP.NET
thc hin c ng cc s kin trong qu trnh lp trnh vi ASP.Net, chng ta
cn tm hiu bng ngha cc tp tin nh sau:
Bng 1.1.Bng ngha cc tp tin
TP TIN MIU T
*.aspx Tp tin ny cha ton b giao din ngi dng, cc ty chn, cc
on m ngun ng dng. y l mt trong nhng trang web u
tin c bt u khi ngi s dng duyt web.
*.cs Tp tin ny cha cc m ngun ca C#
web.config Tp tin tin dng XML cha cu hnh cho ng dng ASP.NET. N bao
gm cc cu hnh v an ninh, qun l trng thi, qun l b nh.
global.asax Chng ta s dng tp tin ny khai bo cc bin ton cc v phn
ng vi cc s kin ton cc.
Trong :
Phn giao din ca ng dng nm trong cc tp tin .aspx v html.
Tt c cc tp tin m ngun (C#, VB.NET hoc ngn ng .NET) s c bin dch
thnh tp tin .DLL v nm trong th mc /Bin.
10 BI 1. ASP.NET
1.4.1 Chu k sng ca trang web trong ASP.NET (Page Life Cycle)
Hnh 1.6. Vng i ca trang ASP.NET
Chu k sng c bt u khi trnh duyt yu cu mt trang web gi l Session.
Chu k sng vn tip tc nu:
Session ang hot ng.
Ngi s dng tng tc vi giao din web cho n khi kch hot mt s kin.
D liu ca trang (View State) wed c gi v cho Server.
Server nhn c View State v tr li yu cu t View State.
Chu k sng kt thc khi:
Ngi dng kt thc trnh duyt.
Session kt thc (timeout).
1.4.2 Mt s s kin ca trang web
Cc s kin x l trong vng i ca trang web c m t trong bng sau:
BI 1. ASP.NET 11
Bng 1.2 Bng s kin lin quan cc din tin ca trang web
S KIN MIU T
Pre Init Kim tra thuc tnh IsPostBack khi ln u tin trang web ang
c s l. To mi hoc to mi li cc Control ng (Dynamic
Control). Thit lp trang ch (Master page), thuc tnh Theme. c
v thit lp gi tr cho thuc tnh Profile.
Init Lm ni (Raised) sau khi cc Control c khi ng v cc
Skin c ng dng. Chng ta s dng s kin ny c hoc
khi to cc thuc tnh ca Control.
Load S dng s kin ny thit lp thuc tnh cho Control, thit lp
cc kt ni vi C s d liu.
InitComplete S dng s kin ny x l cc tc v c yu cu khi tt c cc
khi to hon thnh.
Unload Trang c gii phng khi b nh
Error Khi xy ra li trong trang.
DataBinding Server Control trn trang c gn vi ngun d liu
1.4.3 S kin ng dng
Cc s kin x l trong vng i ca ng dng hay ca h thng c m t trong
bng sau:
Bng 1.3 Bng s kin ng dng
S KIN MIU T
Application_Start Ngi dng u tin duyt trang web.
Application_End Khi khng cn ngi dng no duyt trang web.
Application_Error Khi c li xy ra trong ng dng
Session_Start Khi ngi dng duyt mt trang web
Session_End Khi ngi dng ng trnh duyt hoc Session kt thc (time
out)
V d sau m s ngi truy cp v s ngi online, trong ta cn chun b ni
dung tp tin Global.asax nh sau:
12 BI 1. ASP.NET
void Application_Start(object sender, EventArgs e) { if (!File.Exists(D:\\Dem.txt)) File.WriteAllText(D:\\Dem.txt, 0); Application[SNTruyCap] = int.Parse(File.ReadAllText(D:\\Dem.txt)); } void Application_End(object sender, EventArgs e) { } void Application_Error(object sender, EventArgs e) { } void Session_Start(object sender, EventArgs e) { if (Application[SNOnline] == null) Application[SNOnline] = 1; else Application[SNOnline] = (int)Application[SNOnline] + 1; Application[SNTruyCap] = (int)Application[SNTruyCap] + 1; File.WriteAllText(D:\\Dem.txt, Application[SNTruyCap].ToString()); } void Session_End(object sender, EventArgs e) { Application[SNOnline] = (int)Application[SNOnline] - 1; }
TM TT
Chu k sng ca trang web trong ASP.NET: chu k sng c bt u khi trnh
duyt yu cu mt trang web gi l Session.
Chu k sng vn tip tc nu:
Session ang hot ng.
Ngi s dng tng tc vi giao din web cho n khi kch hot mt s kin.
D liu ca trang (View State) wed c gi v cho Server.
Server nhn c View State v tr li yu cu t View State.
Chu k sng kt thc khi:
BI 1. ASP.NET 13
Ngi dng kt thc trnh duyt.
Session kt thc (timeout).
Kin trc MVC l vic chia tt c mc ca mt ng dng ra lm ba thnh phn
(component) khc nhau Model, View v Controller:
Model: Model c giao nhim v cung cp d liu cho c s d liu v lu d
liu vo cc kho cha d liu. Tt c cc nghip v logic c thc thi Model. D
liu vo t ngi dng s thng qua View c kim tra Model trc khi lu vo c
s d liu. Vic truy xut, xc nhn, v lu d liu l mt phn ca Model.
View: View hin th cc thng tin cho ngi dng ca ng dng v c giao
nhim v cho vic nhn cc d liu vo t ngi dng, gi i cc yu cu n b iu
khin, sau l nhn li cc phn hi t b iu khin v hin kt qu cho ngi
dng. Cc trang HTML, JSP, cc th vin th v cc tp tin ngun l mt phn ca
thnh phn View.
Controller: Controller l tng trung gian gia Model v View. Controller c
giao nhim v nhn cc yu cu t pha my khch. Mt yu cu c nhn t my
khch c thc hin bi mt chc nng logic thch hp t thnh phn Model v sau
sinh ra cc kt qu cho ngi dng v c thnh phn View hin th.
ActionServlet, Action, ActionForm v struts-config.xml l cc phn ca Controller.
BI TP
Cu 1. Thao tc
Lm quen vi mi trng Microsoft Visual Studio
Xy dng ng dng web n gin WebCalculator
o To Project WebApplication
o Thit k giao din WebForm
14 BI 1. ASP.NET
o Vit m lnh x l n gin
o Chy, Debug v sa li chng trnh
Cu 2. Mi trng Microsoft Visual Studio 2010 hoc mi hn
Mt s khi nim c s
o Form
o Controls
o Properties (ID, Width, Height,)
o Phng thc
o S kin
o Th tc Hm (Private, Protected, Public)
o Th vin
o Lu m ngun trong tp tin ring bit (Yes? No?)
Giao din mi trng
o Start Page
o Option Dialog (Line number,).
o Toolbox
Thm control/tab vo toolbox (Bm phi \ Add )
Ko th control vo Form
o Properties
o Solution Explorer
o Class View
o Xem mn hnh design form: Shift-F7
o Chuyn i t Design sang Code v ngc li: F7
o Chy chng trnh: Ctrl-F5 (hoc F5 vi ch Debug)
BI 2. CC LP S DNG TRONG ASP.NET 15
BI 2. CC LP S DNG
TRONG ASP.NET
Hc xong bi ny ngi hc s nm c cc ni dung sau.
Hiu c cc khi nim v i tng Http Request, Http Response, Http Server,
Session, Cookie.
Bit vn dng thnh tho nhng i tng ny trong bi lp trnh lin quan.
2.1 HTTP REQUEST
2.1.1 Gii thiu
Request l mt th hin ca lp HttpRequest. Trnh duyt dng i tng
Request gi thng tin cn thit ti Server.
Hnh 2.1. Ngi dng gi yu cu n server
i tng Request nhn tt c gi tr m trnh duyt ca client gi n server
thng qua HTTP Request.
Request i din cho Client khi yu cu trang Web, Server s dng va Response
va Request p ng yu cu hay i hi thng tin t Client.
16 BI 2. CC LP S DNG TRONG ASP.NET
2.1.2 Cc thuc tnh
2.1.2.1 REQUESTTYPE
RequestType: tr v phng thc truyn d liu t client n server gm 2
phng thc POST v GET
C php: var valMethode=Request.RequestType;
2.1.2.2 TP HP FORM - FORM COLLECTION
Form collection c s dng tp hp d liu c cha trong cc phn t ca
form chuyn t client n server bng phng thc POST.
Ly d liu t cc phn t ca form:
C php: var VarName= Request.Form[FieldName];
V d: ti trang Default.aspx
UserName: Password:
Hnh 2.2. Mn hnh giao din web
Ti trang CheckUser.aspx, ta ly gi tr ca UserName v Password trn form:
UserName:
BI 2. CC LP S DNG TRONG ASP.NET 17
Password
Count: tr v s phn t ca form chuyn t client n server
C php: int Numelement=Request.Form.Count;
Tp hp kha Keys: tr v tn ca phn t ti v tr th i, trong i c gi tr
t 0 n n-1, vi n=Request.Form.Count
C php: var Varfield=Request.Form.Keys[i];
V d ti trang Default.aspx:
using System;
using System.Web.UI; namespace ViDu1 { public partial class _Default : Page { protected void Page_Load(object sender, EventArgs e) { string varField, varName; int num = Request.Form.Count; for (int i = 0; i < num; i++) { varField = Request.Form.Keys[i]; varName = Request.Form[varField]; Response.WriteLine(string.Format(Key[{0}] = {1}, varField, varName)); } } }
}
2.1.2.3 TP HP QUERYSTRING
Request.QueryString
QueryString c dng ly d liu c gi t client n server bng phng
thc GET hoc truyn d liu c cha tag lin kt Hyperlink. QueryString c
18 BI 2. CC LP S DNG TRONG ASP.NET
nh ngha l chui nm sau du ? trong chui URL (Uniform Resource Locator) trn
phn Address ca trnh duyt.
C 3 cch truyn tham s v gi tp tin x l
Cch 1: dng action , tham s truyn qua phn t ca form
Cc phn t ca form
Cch 2: dng action , tham s ghi sau du ?
Cc phn t ca form
Cch 3: dng chui lin kt , tham s ghi sau du ?. Cc tham s c khai bo
cch nhau bi du &, gi tr ca mi tham s t sau du =
Text hoc image
Nu tham s khng c gi tr th gi tr tr v ca tham s khi s dng
Request.QueryString l NULL.
Vi ba cch truyn d liu t Client nu trn, pha Server s dng tp hp
QueryString nhn d liu
C php: Request.QueryString[varName];
Tp hp kha Keys
Keys[i]: tr v tn ca phn t ti v tr th i, trong i c gi tr t 0 n n-1
vi n = Request.QueryString.Count
C php: var Varfield=Request.QueryString.Keys[i];
BI 2. CC LP S DNG TRONG ASP.NET 19
Hnh 2.3. Form ng nhp ti Login.aspx
UserName: Password:
Ti Server, trang Login.aspx.cs, ta ly gi tr ca UserName v Password:
using System; namespace ViDu1 { public partial class Login : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { if (this.IsPostBack) { string strUser = Request.QueryString[txtUser]; string strPws = Request.QueryString[txtPwd]; if (strUser == admin && strPws == 123){ ResultTextBox.Text = Dang nhap thanh cong; } else{ ResultTextBox.Text = Dang nhap khong thanh cong; }
20 BI 2. CC LP S DNG TRONG ASP.NET
} } } }
2.2 HTTP RESPONSE
2.2.1 Gii thiu
Http Response c dng truyn d liu my ch web n trnh duyt web.
Hnh 2.4. V d Response
2.2.2 Cc thuc tnh/phng thc
Thuc tnh Buffer: c 2 gi tr true v false quy nh cch truyn ti d liu:
C php: Response.Buffer=true/false;
o true: Hon tt cng vic v gi mt ln
o false: Thc hin xong n u th gi n
isClientConnected: Kim tra my client c yu cu kt ni n server, kt qu
tr v gi tr true/false
Cookies: c s dng ghi Cookies. Cookies c th hin trong asp.Net l
lp Httpcookies
Clear(): Xa vng tm
C php: Response.Clear()
End(): Kt thc tin trnh x l trn Server v y d liu ti Client
Flush(): Kt thc tin trnh, quay li thc hin tip
BI 2. CC LP S DNG TRONG ASP.NET 21
Redirect(url) : dng chuyn client sang mt URL khc
Redirect(url, Boolean): dng chuyn client sang mt URL khc, trong :
o Nu Boolean=true th khi thc hin xong, lnh Response s thc hin tip
o Nu Boolean =false th khi thc hin xong, lnh Response s dng
Write(Data): Ghi d liu ra trang web
V d: Response.Write(Hello world);
2.3 HTTP SERVER
i tng Server cung cp cc phng thc gip chuyn iu khin gia cc
trang vi nhau, ly thng tin v m li, encode,
Cc thuc tnh:
o MachineName: tn server
o ScriptTimeout: thit lp thi gian x l ti a 1 tp tin
V d: Server.ScriptTimeout=100s //thit lp thgian mc nh
HtmlEncode(str): dng m ho HTML thnh chui
C php: Khi m ho chui HTML sang chui bnh thng nu gp cc k t nh
sau s chuyn sang k t tng ng:
o K t < chuyn thnh <
o K t > chuyn thnh >
o K t & chuyn thnh &
o Du nhy i chuyn thnh "
HtmlDecode(strcontent):gii m cc th HTML
V d: Str=n>5; Str=server.HtmlDecode(str); // kt qu n>5
Transfer: gi tt c thng tin m n x l t trang ASP hin hnh sang trang
ASP khc
22 BI 2. CC LP S DNG TRONG ASP.NET
C php: Tham s path l ng dn ca tp tin ASP cn chuyn iu khin.
Phng thc URLEncode: Tng t nh phng thc HTMLEncode, phng
thc URLEcode dng m ho URL thnh chui
C php: Khi m ho chui URL sang chui bnh thng nu gp cc k t nh
sau, s chuyn sang k t tng ng:
o K t khong trng chuyn thnh du +
o K t khng thuc k t ch v s s chuyn thnh s hexadecimal.
2.4 SESSION V COOKIE
2.4.1 Gii thiu Cookie v Session
im chung gia Cookie v Session l vic lu tr v qun l mt s thng tin
lin quan n ngi dng website, nhng thng tin ny cn dng trn nhiu trang
web ca cng h thng website.
Thng tin c lu tr vi khong thi gian quy nh trc, v c th t hy khi
ht thi gian cho php. Cookie v Session thun tin cho vic gi thng tin qua li
gia cc trang web m khng cn dng qua phng thc POST/GET gim thiu vic
pht sinh thm bin.
ng dng thng thy ca Cookie v Session l lu tr thng tin ng nhp ca
ngi dng, xc nh thi im ng nhp, thot khi website Kt hp vi thao tc
Redirect c th qun l, chn truy cp t ngi dng khi cha ng nhp
2.4.2 Cookie
2.4.2.1 C IM COOKIE
Cookie c lu tr trn trnh duyt, khi ngi dng s dng trnh duyt truy cp
vo mt website no th server s gi cookie v trnh duyt v lu tr trc tip
trn my ngi dng (client).
BI 2. CC LP S DNG TRONG ASP.NET 23
Cookie s khc nhau cho mi loi trnh duyt, IP ngi dng cng nh server ca
website. Cookie c to ra bi website v gi ti browser, do vy 2 website khc
nhau (cho d cng host trn 1 server) s c 2 cookie khc nhau gi ti trnh duyt .
Mi trnh duyt s c cch qun l v lu tr cookie theo cch ring ca mnh, cho
nn 2 trnh duyt cng truy cp vo 1 website s nhn c 2 cookie khc nhau.
Trong ASP.NET cc phng thc, thuc tnh lin quan n vic x l Cookie c
lu tr trong class HttpCookie. Cc thuc tnh thng dng trong Cookie:
Name: Tn Cookie.
Domain: Tn min ca Cookie lu tr.
Expires: Xc nh thi gian hiu lc ca Cookie.
Value: Gi tr ca Cookie.
HasKeys: Cho bit Cookie c tp gi tr con hay khng.
Values: Tp cc gi tr ca Cookie.
Mi ln c yu cu ln website, trnh duyt s gi cookie ln server, server s c
c ch c cookie v x l cho tc v no . Mi cookie c website gi n trnh
duyt thng bao gm 3 thnh phn chnh sau:
a ch URL ca website m trnh duyt nhn cookie
Thi gian tn ti ca Cookie
Gi tr lu tr.
2.4.2.2 PHNG THC THAO TC
Ghi Cookie:
C php: Respone.Cookies[cookie][key|attribute]=value;
Trong , cookie l tn bin cookie, key l tham s m rng cho Cookie, attribute
l cc thuc tnh ca bin Cookie.
c Cookie:
C php: value = Request.Cookies[cookie][key|attribute];
24 BI 2. CC LP S DNG TRONG ASP.NET
Thao tc trn Cookie c nhiu Subkey
Xa Cookie: Vic xa Cookie thc cht l thao tc chnh thi gian hiu lc v
trc thi im hin ti so vi gi h thng.
2.4.3 Session
2.4.3.1 C IM
Ta c th cha thc s dng cookie lu tr Shoping Cart. Mt cookie va qu
nh v qu n gin. lm vic ngoi gii hn ca Cookie, ASP.NET Framework h
tr mt chc nng mi c gi l Session State. Ging vi Cookie, Session lu
tr d liu trong phm vi ring vi tng ngi s dng. Nhng khng ging vi
Cookie, Session khng gii hn dung lng, nu ta cn lu tr hng Gigabyte d
liu, hn th na Session c th a ra iu i tng phc tp hn l chui Text. Ta
c th lu tr mt vi i tng trong Session. V d ta c th lu tr mt Dataset
hay mt Shoping Cart trong Session.
2.4.3.2 SESSION TRONG ASP.NET
Trong ASP.NET cng nh cc cng ngh lp trnh web khc, Session c to ra
khi Client bt u c yu cu gi ti Server v s kt thc khi Client c thao tc hy
Session hoc sau mt thi gian (nh trc) khng c bt k thao tc no ln Server.
Khi Session c to ng thi phng thc Session_OnStart() s c thc thi
v tng t khi kt thc Session phng thc Session_OnEnd() s c thc thi.
2.4.3.3 MT S PHNG THC THAO TC TRN SESSION
Timeout: Qui nh khong thi gian (tnh bng pht) Web Server duy tr Session
nu ngi dng khng gi yu cu no v li Server.
o Gi tr mc nh ca Timeout l 20. Nu khng c yu cu no k t ln
yu cu cui cng sau mt khong thi gian l pht, i tng
Session m Web server cp cho ln lm vic s t ng c gii
phng.
BI 2. CC LP S DNG TRONG ASP.NET 25
o Nhng yu cu sau , webserver coi nh l mt ngi dng mi, v s
cp mt i tng Session mi.
V d: Thit lp thi gian cho 1 phin lm vic ca user l 100 pht
Session.TimeOut = 100;
C th thit lp thuc tnh ny trong tp tin Web.config
SessionID: cha ID ca session ang kch hot, mi user c phn bit bi
sessionID gi l m phin lm vic.
Count: tr v s session trong mt ng dng
Abandon(): gii phng vng nh c dng duy tr i tng Session trn
Web Server ngay khi c gi thc hin. Nhng yu cu sau c Web server coi
nh l mt ngi dng mi.
Remove(SessionName): xo d liu trn bin VarSession
RemoveAll(): Xo d liu, nhng sessionID vn tn ti
Cng c th dng Session lu cc bin gi tr nh Cookie
Session[nameVar] = value;
TM TT
Bi hc ny gii thiu v cc i tng lm vic thng dng v quan trng trong
k thut lp trnh web l Request, Response, Cookie v Session.
Request l mt th hin ca lp HttpRequest, Browser dng Request object gi
thng tin cn thit ti Server. i tng Request nhn tt c gi tr m trnh duyt
ca client gi n server thng qua HTTP request.
Http Response c s dng truyn d liu webserver n webBrowser
26 BI 2. CC LP S DNG TRONG ASP.NET
i tng Server cung cp cc phng thc gip chuyn iu khin gia cc trang
vi nhau, ly thng tin v m li, encode,
Cookie c lu tr trn trnh duyt, khi ngi dng s dng trnh duyt truy cp
vo mt website no th server s gi cookie v trnh duyt v lu tr trc tip
trn my ngi dng (client). Cookie s khc nhau cho mi loi trnh duyt, IP ngi
dng cng nh server ca website. Cookie c to ra bi website v gi ti browser,
do vy 2 website khc nhau (cho d cng host trn 1 server) s c 2 cookie khc
nhau gi ti trnh duyt. Mi trnh duyt s c cch qun l v lu tr cookie theo
cch ring ca mnh, cho nn 2 trnh duyt cng truy cp vo 1 website s nhn c
2 cookie khc nhau.
Ging vi Cookie, Session lu tr d liu trong phm vi ring vi tng ngi s
dng. Nhng khng ging vi Cookie, Session khng gii hn dung lng, nu ta cn
lu tr hng Gigabyte d liu, hn th na Session c th a ra iu i tng phc
tp hn l chui Text. Ta c th lu tr mt vi i tng trong Session. Session c
to ra khi Client bt u c Requset gi ti Server v s kt thc khi Client c thao
tc hy Session hoc sau mt thi gian (nh trc) khng c bt k thao tc no ln
Server.
BI TP
Bi thc hnh ny ta s s dng Visual Studio thit k web vi cc trang nhp
liu, truyn tham s gia cc trang v hin th thng tin chi tit, ta c th thc hin
cc cng vic ny theo cc bc sau:
To WebForm, t tn l DVDCatalog.aspx vi giao din thit k nh sau:
BI 2. CC LP S DNG TRONG ASP.NET 27
Trong ca s Solution Explorer, ta bm chut phi ln file DVDCatalog.aspx, chn
View Code. Trong s kin Form_Load ta hy vit lnh sau:
Ta bm p vo nt Reset thc hin vit m lnh nh sau:
Ta vit s kin cho nt Submit v bm p vo nt Submit thc hin lnh:
28 BI 2. CC LP S DNG TRONG ASP.NET
Ta to mi mt Web Form v t tn l Bill.aspx. Trong ca s Solution
Explorer, ta bm chut phi ln file Bill.aspx, chn View Code. Trong s
kin Page_Load ta vit m lnh sau:
Trong ca s Solution Explorer, bm chut phi ln file DVDCatalog.aspx, chn
View in Browser. Ta in y cc thng tin v bm nt Submit v xem kt qu.
BI 3. TRUY CP D LIU 29
BI 3. TRUY CP D LIU
Hc xong bi ny ngi hc s nm c cc ni dung sau:
Khi nim v v ADO.NET, SqlDatasource, LinqDataSource, Linq v phng
php lm vic ca tng i tng.
Bit vn dng thnh tho nhng i tng ny trong bi lp trnh lin quan.
3.1 TNG QUAN
Phn ln cc ng dng hin nay u s dng c s d liu. C nhiu cch thc
truy cp d liu khc nhau trong cc cng ngh ca Microsoft nh ADO, RDO, DAO,
ODBC. Tuy nhin t khi .NET Framework ra i th cng ngh ADO.NET c tch
hp, ADO.NET cha cc lp cho php cc ng dng kt ni vi cc ngun d liu
(connect data sources), thc hin cc lnh (execute commands), qun l d liu
ngt kt ni (manage disconnected data). Vi ADO.NET, ngi lp trnh c th vit t
m lnh thao tc c s d liu hn so vi cc cng ngh trc trong cc ng dng
client-server hoc cc ng dng trn desktop.
Mt khc, trong ASP.NET t phin bn .NET Framework 2.0 tr ln c thm cc
thao tc vi c s d liu m khng s dng ADO.NET nh SqlDataSource, LINQ
hoc Profiles.
Ngoi ra cc ng dng truy cp d liu ca .NET Framework cn c th truy nhp
vo cc ngun d liu ngoi nh tp tin, Stream, XML, Ajax, web services, WCF, data
services.
Trong bi hc ny, ta s to ra mt Web site project thao tc vi c s d liu, s
dng Visual Studio 2008 to mt project Website, trong to mt c s d liu tn
30 BI 3. TRUY CP D LIU
l DB_TEST.MDF trong folder App_Data. (h3.1, h3.2), ri S dng c s d liu
DB_TEST to 2 table HangHoa v KhoHang.
Hnh 3.1. Thm Sql c s d liu t d n
Hnh 3.2. Thit k bng
Sau , ta to mt chui kt ni (connection) trong tp tin cu hnh web.config v
t tn l ConnectionString cho php truy nhp vo c s d liu.
Ni dung tp tin web.config:
BI 3. TRUY CP D LIU 31
3.2 TRUY CP D LIU ADO.NET
ADO.NET Data Providers cho php truy nhp vo mt c s d liu c th, thc
hin cc cu lnh SQL v nhn d liu. Data provider l chic cu ni gia ng dng
v ngun d liu.
Lp ADO.NET Data Provider bao gm cc thnh phn:
Connection: Thc hin kt ni ti ngun c s d liu;
Command: Thc hin mt cu lnh SQL hoc mt store procedures;
DataReader: Ch c v nhn d liu t mt truy vn;
DataAdapter thc hin 2 nhim v:
32 BI 3. TRUY CP D LIU
o in d liu nhn c vo mt DataSet,
o C th ghi nhn s thay i d liu trong DataSet.
Mt v d s dng ADO.NET vi i tng hin th d liu l GridView. To mt
webform t tn l Adonet.aspx, trong webform to mt GridView t tn l
GridView1. M lnh thc hin kt ni d liu:
SqlConnection conn = new SqlConnection(ConfigurationManager.ConnectionStrings[ConnectionString].ConnectionString); SqlCommand sql = new SqlCommand(SELECT * FROM HangHoa, conn); DataSet ds = new DataSet(); SqlDataAdapter sda = new SqlDataAdapter(sql); sda.Fill(ds, HangHoa); DataTable dt = ds.Tables[HangHoa]; GridView1.DataSource = dt.DefaultView; GridView1.DataBind();
Kt qu chng trnh l:
Hnh 3.3. Hin th danh sch hang ha trn trang vi GridView
3.3 TRUY CP D LIU XML
D liu XML ngy cng thng dng v c pht trin mnh m hn trc. Trong
cc ng dng ngy nay, vic s dng XML thay cho d liu truyn thng ang c xu
hng pht trin mnh m. Tuy nhin cc ng dng s dng XML lm c s d liu
vn cn mc quy m nh v hn ch.
BI 3. TRUY CP D LIU 33
V d s dng GridView hin th d liu trong mt tp tin XML.
Ni dung tp tin Employee.xml:
Nguyen Van A 1988 Student Do Nhu B 1989 Engineer
Ni dung tp tin XML.aspx.cs:
DataSet ds = new DataSet(); ds.ReadXml(Server.MapPath(Employee.xml)); DataTable dt = ds.Tables[Employees]; GridView1.DataSource = dt.DefaultView; GridView1.DataBind();
Kt qu chng trnh l:
Hnh 3.4. Kt qu chng trnh
3.4 SQLDATASOURCE
SqlDataSource l mt thnh phn c gii thiu t .NET Framework 2.0. S
dng SqlDataSource truy cp d liu s khng cn phi vit m lnh lp trnh, ch
cn khai bo y cc thuc tnh cn. SqlDataSource ch nn dng khi khng cn s
dng cc truy vn SQL qu phc tp thao tc vi c s d liu.
34 BI 3. TRUY CP D LIU
SqlDataSource l mt cch thc kt ni d liu dng ADO.NET provider:
System.Data.SqlClient,
System.Data.OracleClient,
System.Data.OleDbClient,
System.Data.OdbcClient.
SqlDataSource cn c mt mt chui m t kt ni (connectionString) thng t
trong web.config. Tip theo ca SqlDataSource l mt cu lnh SQL c th l mt cu
lnh truy vn SELECT hoc cc cu lnh lin quan n thay i d liu nh: DELETE,
INSERT, UPDATE.
Hnh 3.5. Kt hp d liu vi SqlDataSource
La chn bng cn hin th d liu vo trong SqlDataSource (v d table KhoHang)
sau thit lp GridView tr vo SqlDataSource va c to.
BI 3. TRUY CP D LIU 35
Hnh 3.6. Cu hnh kt ni
Kt qu chng trnh l:
Hnh 3.7. Trang hin th danh sch kho hng trn trnh duyt
3.5 TRUY CP D LIU LINQ
LINQ l mt s sng to mi trong .NET Framework 3.5 (Language Integrate
Query) l mt tp hp m rng ngn ng cho php thc hin cc truy vn trong ngn
ng C# 2008 v Visual Basic 2008. LINQ cho php chn (select), lc (filter), sp th
t (sort), nhm (group) v chuyn (transform) d liu t cc ngun d liu (data
source) khc nhau theo mt cch chung. LINQ to Objects thc hin truy vn cc i
36 BI 3. TRUY CP D LIU
tng, LINQ to DataSet thc hin truy vn DataSet, LINQ to SQL thc hin truy
vn n c s d liu SQL Server m khng phi vit m ngun, LINQ to XML c
d liu t nh dng XML.
3.5.1 LINQ c bn
Nu khng dng LINQ, nu cn ly tt c hng ha bt u bng B th ta c m
ngun sau:
DanhMucHangHoa dm = new DanhMucHangHoa(); List dshh = dm.LayDanhMucHangHoa(); List dmhh = new List(); foreach (HangHoaChiTiet hh in dshh) { if (hh.HangHoa_TenHang.ToString().StartsWith(B)) { dmhh.Add(hh); } } Nu s dng LINQ trong m lp trnh: List dshh = dm.LayDanhMucHangHoa(); IEnumerable dmhh; dmhh = from hh in dshh where hh.HangHoa_TenHang.ToString().StartsWith(B) select hh; GridView1.DataSource = dshh; GridView1.DataBind();
3.5.2 Cch lm vic ca LINQ
dng LINQ, ta cn to ra mt LINQ expression theo ng quy tc.
Gi tr tr v ca LINQ expression l mt i tng iterator thc thi giao din
IEnumerable
Khi enumerable c gn vo iterator th LINQ thc hin.
3.5.3 C php LINQ
C php LINQ tng t nh mt c php ca SQL nhng c trt t khc vi SQL.
3.5.3.1 DNG FILTER V SORTING VI LINQ
IEnumerable dmhh = from hh in dshh where hh.HangHoa_TenHang.ToString().StartsWith(B)
BI 3. TRUY CP D LIU 37
select hh;
hoc:
IEnumerable dmhh = from hh in dshh
orderby hh.HangHoa_TenHang
select hh;
Ta c th dng LINQ nh sau (hai cu lnh sau tng ng nhau):
IEnumerable dmhh = from hh in dshh select hh;
Hoc:
IEnumerable dmhh = hh.Select(hh => hh);
3.5.3.2 LINQDATASOURCE
LinqDataSource l mt iu khin c th thc hin nhiu tc v thm, sa, xa
d liu mt cch t ng. Vi LinqDataSource, ta khng cn vit m ngun cho c
vic cp nht, sa i d liu cng ging nh SqlDataSource.
Hnh 3.8. Thm Linq to SQL vo d n
38 BI 3. TRUY CP D LIU
Sau ta to ra m hnh LinqSqlDataContext cho php Linq ly d liu t c s
d liu DB_TEST.MDF
Hnh 3.9. M hnh dbml
Ta thit lp cu hnh cho control Linqdatasource1 nh sau: Chn
Linqdatasource1 Configure Data Source Chn LinqSqlDataContext, ri
thc hin a d liu t LinqDataSource vo vo GridView:
BI 3. TRUY CP D LIU 39
Hnh 3.10 Kt qu thc thi
Kt qu chng trnh l:
Hnh 3.11. Danh sch hng ha
40 BI 3. TRUY CP D LIU
TM TT
Lp ADO.NET Data Provider bao gm cc thnh phn: Connection: Thc hin
connect ti ngun c s d liu; Command: Thc hin mt cu lnh SQL hoc mt
store procedures; DataReader: Ch c v nhn d liu t mt truy vn; DataAdapter
thc hin 2 nhim v: in d liu nhn c vo mt DataSet, c th ghi nhn s
thay i d liu trong DataSet.
LINQ cho php x l d liu t cc 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 SQL Server m khng phi
vit m ngun, LINQ to XML c d liu t nh dng XML.
T khi c cc control SqlDataSource, LinqDataSource th c cn thit dng cc i
tng ca ADO.NET (Connection, Command, Adapter, ... ) truy cp d liu na
khng? Cu tr li l vn cn thit v d cc i tng SqlDataSource,
LinqDataSource rt linh hot v c th m ng hu ht cc chc nng nhng vn
cha th cung cp cho nhu cu ngi dng nht l i vi nhng thao tc phc tp
ln c s d liu.
Khi cn thc hin ly d liu t mt table trong c s d liu s dng ADO.NET ri
a vo i tng DataTable th cn cc b thnh phn no sau y: Connection,
DataSet, Adapter.
BI TP
Trong bi thc hnh ny, ta s xy dng trang website qun l tin:
Cho php chn mt lnh vc t combo box v hin th danh sch tin thuc lnh
vc c chn.
Cho php sp xp danh sch tin theo ngy ng tin, tiu .
Thao tc vi DataGrid: hin th d liu, phn trang, sp xp,
BI 3. TRUY CP D LIU 41
Cho php thm, xo, sa tin.
Yu cu:
nm bt c cch thc kt ni CSDL.
Xy dng c kin trc 3 tng.
To cc class : LinhVucInfo, BanTinInfo, BanTinController , LinhVucController,
LinhVucDAL, BanTinDAL, DataService.
42 BI 4. Lp trnh giao din web vi jQuery
BI 4. Lp trnh giao din web
vi jQuery
Hc xong bi ny ngi hc s nm c cc ni dung sau:
Bit c jQuery l g, cch thc ng k s dng jQuery trang html v
phng php lp trnh jQuery vi giao din html
Bit vn dng thnh tho nhng i tng ny trong bi lp trnh lin quan.
4.1 jQUERY L G?
4.1.1 Gii thiu
jQuery l mt th vin kiu mi ca Javascript gip n gin ha cch vit
JavaScript v tng tc x l cc s kin trn trang web. Cc th vin jQuery cung
cp mt mc ch chung l s tru tng ho cc lp ph bin cho cc trang web
scripting, do n hu ch trong hu ht cc tnh hung scripting.
Cc chc nng jQuery bao gm:
Chn mt tag hoc mt tp hp cc tag trn trang web.
Cung cp cc hm tin ch thng dng.
Nhanh chng to ra cc tag mi.
Quan trng nht l phn tch vic thit k v lp trnh web trn pha client.
jQuery l mt th vin script, do ta c th thm vo trang web. Ta c th
download bn mi nht ca jQuery t http://docs.iquery.com/Downloading jQuery.
T Visual Studio 2008 SP1 h tr y cc chc nng ca JavaScript
Intellisense.
BI 4. Lp trnh giao din web vi jQuery 43
Mc ch chnh ca jquery-***-vsdoc.js l gip chng ta trong vic vit cc
dng ch thch v h tr cho vic pht sinh m thng minh trong khi son tho
jQuery.
Hnh 4.1. Website jQuery.com
4.1.2 S dng jQuery trong ASP.NET
T Visual Studio 2010 tr i, jQuery c tch hp sn trong cc d n web,
nh web form hay MVC.
44 BI 4. Lp trnh giao din web vi jQuery
Hnh 4.2. Cy th mc ca d n
Trc khi vit cc cu lnh jQuery, ta ch cn khai bo s dng th vin jQuery
nh sau:
Vi du 9
BI 4. Lp trnh giao din web vi jQuery 45
4.2 LP TRNH VI jQUERY
4.2.1 Chy m khi trang sn sng
Ta c th thy rng hu ht khi lp trnh vi Javascript, kt thc m thc thi bng
cch thm cc dng m vo script, tng t nh sau:
window.onload = function() { ... }
Cc m bn trong s c thc thi khi trang c ti xong. Tuy nhin, m
Javascript khng chy cho n khi tt c cc hnh nh trong trang c ti xong,k c
banner qung co. L do cho vic s dng window.onload l chc chn rng i
tng HTML document phi c ti xung ht, sau mi chy m kia. gii
quyt, jQuery c cu lnh n gin, c bit nh:
$(document).ready(function() {
//M ca chng ta
});
M ny kim tra i tng document v i cho n khi n sn sng s dng -
theo chng ta mun.
4.2.2 Hm $() - function $()
Khi chng ta lm vic vi CSS, Xpath hoc custom, jQuery s dng function $()
(du $ v cp du ngoc). Di dy l mt s thnh phn trong $():
$(p): p l tn ca mt th (tag).
$(#id): id l tn ca mt id.
$(.class): class l tn ca mt lp.
4.2.3 Mt s API trong jQuery
4.2.3.1 CHN SELECTOR
46 BI 4. Lp trnh giao din web vi jQuery
#id : chn i tng vi id cho trc. Nu id cha cc k t nh du chm (.)
hoc 2 du [] th chng phi thm 2 du ngch cho (\\) vo trc cc k t .
V d:
$(#mainDiv).css(font-style, italic); Nu l $(#some.id) th phi vit thnh $(#some\\.id) Nu l $( #some [id] ) th phi vit thnh $(#some\\[id]\\)
Element: chn nhng i tng vi tag c gn
V d chn nhng element l select:
$(select).css(background-color, yellow);
Class : chn nhng i tng c lp css cho.
V d chn nhng i tng c lp css l required:
$(.required).css(background-color, yellow);
Selector1, selector2, selectorN : Ph hp vi s kt hp ca tt c cc kt
qu xc nh selectors, s lng selectors l bt k, trt t ca cc phn t DOM
trong i tng jQuery khng nht thit phi ng th t.
V d:
Vi du 9 1 $(document).ready(function () { $(#div1).css(color, red); $(#div3\\.1\\.\\[0\\]).css(color, red); $(div).css(width, 200px); $(div).css(height, 100px); $(.Class1).css(color, red); $(*).css(border, 1px solid blue); $(div,span).css(background-color, #EEEEEE); }); div { float: left; padding: 5px;
BI 4. Lp trnh giao din web vi jQuery 47
margin: 5px; } .Class1 { } Visual Studio ASP.NET Download jQuery Cho mng bn n vi jQuery
Ancestor descendant: Tng ng vi tt c cc phn t vi danh ngha
descendant (hu du nh con, chu, cht, ) ca cc phn t xc nh bi danh
ngha ancestor.
V d gn css cho nhng input nm trong cc form:
$(form input).css(border, 2px dotted blue);
parent > child : ly cc phn t con trc tip ca phn t cha cho trc. Tng
ng vi cc phn t con di danh ngha child ca phn t c xc nh vi danh
ngha parent.
V d gn css cho tt c phn t con ca i tng cha c id l main:
$(#main > *).css(border, 3px double red);
Ly phn t lin sau ca nhng i tng c chn theo c php: prev + next
V d ly phn t lin sau l input ca nhng label:
$( label + input).css(color, blue).val(Labeled!);
V d:
Vi du 9 1
48 BI 4. Lp trnh giao din web vi jQuery
$(document).ready(function () { $(form input).css(border, 1px solid blue); $(#submit > *).css(border, 1px solid red); $(label + input).css(background-color, red); }); body { font-size: 14px; } form { border: 2px green solid; padding: 2px; margin: 0; background: #efe; } div { color: red; } fieldset { margin: 1px; padding: 3px; } Nhp thng tin c nhn H v tn: Ni cng tc Tn cng ty: a ch: H khu thng tr: Cp nht Hy b
BI 4. Lp trnh giao din web vi jQuery 49
Hnh 4.3 Kt qu khi thc hin chng trnh
4.2.3.2 LC - FILTER
first : Tng ng vi phn t u tin c chn.
V d:
$(tr:first).css(font-style, italic);
last : tng ng vi phn t cui cng c chn.
V d:
$(tr:last).css(background-color, yellow);
:not(selector) : B ra tt c cc phn t tng ng cho selector.
V d :
$(input:not(:checked)+span).css(background-color, yellow);
:even : Tng ng vi cc phn t chn, ch s 0, 2, 4, ...
V d:
$(tr:even).css(background-color, #bbbbff);
:odd : Tng ng vi cc phn t l, ch s 1, 3, 5, ... V d:
V d:
$(tr:odd).css(background-color, #bbbbff);
:eq(index) :Tng ng vi mt phn t ring l bi ch s ca n.
V d gn css cho cc ct l ca bng:
V d: $(td:eq(2)).css(color, red);
50 BI 4. Lp trnh giao din web vi jQuery
Vi du 9 3 $(document).ready(function () { $(tr:first).css(font-style, italic); $(tr:last).css({ backgroundColor: 'yellow', fontWeight: 'bolder' }); $(tr:even).css(color, red); $(tr:odd).css(color, blue); $(tr:eq(4)).css(text-decoration, line-through); $(tr:gt(6)).css(font-size, 30px); $(tr:lt(3)).css(font-size, 25px); $(:header).css({ background: '#000', color: blue }); }); Dng th 1 Dng th 2 Dng th 3 Dng th 4 Dng th 5 Dng th 6 Dng th 7 Dng th 8 Dng th 9 Tiu 1 Ni dung 1 Tiu 2 Ni dung 2
Kt qu chng trnh
BI 4. Lp trnh giao din web vi jQuery 51
4.2.3.3 HTML TEXT VAL
html
Phng thc ny ch c cc element c thuc tnh inner html nh div, span, v.v
Ly ni dung html (innerHTML) ca phn t.
html() Kiu tr v: String
V d: Mi khi bm vo th p ly ni dung html ca th p v thng bo ni
dung ly c.
$(p).click(function() {alert($(this).html())});
Thit lp ni dung html (innerHTML) cho phn t.
html( value ) Kiu tr v: jQuery
V d: Thit lp ni dung html cho th div.
$(div).html(Cho cc bn! Chc bui hc hm nay th v.);
text
Ly ni dung text (innerText) ca phn t.
text() Kiu tr v: String
V d: Mi khi bm vo th p ly ni dung text ca th p v thng bo ni dung
ly c.
$(p).click(function() {alert($(this).html())});
Thit lp ni dung text (innerText) cho phn t.
text( value ) Kiu tr v: jQuery
V d: Thit lp ni dung text cho th div.
$(div).text(Cho cc bn! Chc bui hc hm nay th v);
Val
Phng thc ny ch c cc phn t c thuc tnh value nh input, select
val() Kiu tr v: String
52 BI 4. Lp trnh giao din web vi jQuery
V d: var $(#username).val() ;
Thit lp gi tr cho phn t.
val( value )
V d: Thit lp ni dung text cho th input.
V d: $(input).val(hello world);
4.2.3.4 N HIN
:hidden Tng ng vi tt c cc phn t c n i hoc phn t vo c dng
n hidden.
V d: $(div:hidden).show(3000);
:visible : tng ng vi cc phn t nhn thy c V d:
Bm chut vo cc th div nhn thy c.
V d: $(div:visible).click(function() {$(this).css(background, yellow);});
TM TT
Trong bi ny ta bt u lm quen vi jQuery. jQuery l mt th vin kiu mi ca
Javascript gip n gin ha cch vit JavaScript v tng tc x l cc s kin trn
trang web. Cc th vin jQuery cung cp mt mc ch chung l s tru tng ho
cc lp ph bin cho cc trang web scripting, do n hu ch trong hu ht cc tnh
hung scripting.
Cc chc nng jQuery bao gm:
Chn mt tag hoc mt tp hp cc tag trn trang web.
Cung cp cc hm tin ch thng dng.
Nhanh chng to ra cc tag mi.
Quan trng nht l phn tch vic thit k v lp trnh web trn pha client.
BI 4. Lp trnh giao din web vi jQuery 53
BI TP
Hy trnh by:
Cch s dng jQuery trong lp trnh ASP.Net truy xut d liu.
Mt s v d tng qut v y vi cc ng dng t nhng hm API
54 BI 5. TNG QUAN V ASP.NET MVC FRAMEWORK
BI 5. TNG QUAN V ASP.NET
MVC FRAMEWORK
Hc xong bi ny ngi hc s nm c cc ni dung sau:
Kin thc c bn v M hnh MVC cng cc c tnh, v u im khi p dng m
hnh MVC
Phng php iu hng URL vi MVC
Bit cch xy dng ng dng MVC n gin v vn dng thnh tho nhng k
thut lin quan m hnh MVC trong bi lp trnh lin quan.
5.1 TNG QUAN ASP.NET MVC
5.1.1 M hnh MVC c bn
MVC vit tt ca Models, Views, Controllers. MVC chia giao din UI thnh 3
phn tng ng: u vo ca controller l cc iu khin thng qua HTTP request,
model cha cc min logic, view l nhng th c sinh ra tr v cho trnh duyt.
Hnh 5.1. M hnh MVC c bn
BI 5. TNG QUAN V ASP.NET MVC FRAMEWORK 55
Li ch ca vic dng phng php MVC l s phn on r rng gia models,
views, controllers bn trong ng dng. Cu trc r rng ca m hnh MVC s gip cho
vic kim tra li ng dng tr nn d dng hn.
5.1.2 c tnh trong ASP.NET MVC
Tch r rng cc mi lin quan, m kh nng test TDD (Test Driven Developer).
Ta c th kim th n v (test unit) trong ng dng m khng cn phi chy
Controllers cng vi tin trnh ca ASP.NET v c th dng bt k mt unit testing
framework no nh NUnit, MBUnit, MS Test, v.v...
C kh nng m rng, mi th trong MVC c thit k cho php d dng thay
th/ty bin. V d: ta c th la chn s dng engine view ring, routing policy,
parameter serialization, v.v...
Bao gm mt nh x URL mnh m cho php xy dng ng dng vi nhng URL
sch, cc URL khng cn cs phn m rng. V d ta c th nh x a ch
/Products/Edit/4 thc hin hnh ng Edit ca lp iu khin ProductControllers
hoc nh x a ch /Blog/SomeTopic thc hin hnh ng Display Topic ca lp
iu khin BlogEngineController
ASP.NET MVC Framework cng h tr nhng tp tin ASP.NET nh .ASPX .ASCX
v .Master, nh du cc tp tin ny nh mt view template. Ta c th d dng
dng cc tnh nng ca ASP.NET nh lng cc trang Master, snippets, m
t server controls, template, data-binding, localization, v.v... . Tuy nhin chng s
khng cn postback v interactive back server v thay vo l interactive end-user
ti mt Controller class ( khng cn viewstate, page lifecycle )
ASP.NET MVC Framework h tr y cc tnh nng bo mt ca ASP.NET nh
forms/windows authenticate, URL authorization, membership/roles, output v data
caching, session/profile state, configuration system, provider architecture v.v...
56 BI 5. TNG QUAN V ASP.NET MVC FRAMEWORK
5.1.3 Khc bit vi Web Form
ASP.NET WebForm s dng ViewState qun l, cc trang ASP.NET u c
lifecycle, postback v dng cc web controls, cc s kin thc hin cc hnh ng
cho UI khi c s tng tc vi ngi dng nn hu ht ASP.NET WebForm x l chm.
ASP.NET MVC Framework chia ra thnh 3 phn: Models, Views, Controllers. Mi
tng tc ca ngi dng vi Views s c thc hin hnh ng trong Controllers,
khng cn postback, khng cn lifecycle khng cn s kin.
Vic kim th (test), g li (debug) vi ASP.NET u phi chy tt c cc tin trnh
ca ASP.NET v mi s thay i ID ca bt k iu khin no cng nh hng n
ng dng. i vi ASP.NET MVC Framework th vic c th s dng cc unit test c
th thm nh rt d dng cc Controller thc hin nh th no.
Bng 5.1 Bng so snh tnh nng gia ASP.NET vi ASP.NET MVC
Tnh nng ASP.NET ASP.NET MVC
Kin trc
chng
trnh
Kin trc m hnh WebForm
Business Database
Kin trc s dng vic phn chia
chng trnh thnh Controllers,
Models, Views
C php
chng
trnh
S dng c php ca webform,
tt cc s kin v iu khin do
server qun l
Cc s kin c iu khin bi
controllers, cc iu khin khng
do server do server qun l
Truy cp
d liu
S dng hu ht cc cng ngh
truy cp d liu trong ng dng
Phn ln dng LINQ to SQL class
to m hnh truy cp i tng
Debug Debug chng trnh phi thc
hin tt c bao gm cc lp
truy cp d liu, s hin th,
iu khin cc iu khin
Debug c th s dng cc unit test
kim tra cc phng thc trong
controller
Tc
phn ti
Tc phn ti chm khi trong
trang c qu nhiu cc iu
khin v ViewState qu ln
Phn ti nhanh hn do khng phi
qun l ViewState qun l cc
control trong trang
Tng tc Tng tc vi javascript kh Tng tc vi javascript d dng v
BI 5. TNG QUAN V ASP.NET MVC FRAMEWORK 57
Tnh nng ASP.NET ASP.NET MVC
vi
javascript
khn v cc iu khin c
iu khin bi server
cc i tng khng do server
qun l iu khin khng kh
URL
Address
Cu trc a ch URL c dng
.aspx?&
Cu trc a ch rnh mch theo
dng Controllers/Action/Id
5.1.4 Li ch ca ng dng web da trn m hnh MVC
ASP.NET MVC Framework mang li nhng li ch sau:
D dng qun l s phc tp ca ng dng bng cch chia ng dng thnh ba
thnh phn model, view, controller
N khng s dng view state hoc server-based form. iu ny tt cho nhng
lp trnh vin mun qun l ht cc kha cnh ca mt ng dng.
N s dng mu Front Controller, mu ny gip qun l cc yu cu (requests)
ch thng qua Controller. Nh ta c th thit k mt h tng qun l nh tuyn.
c nhiu thng tin hn, ta nn xem phn Front Controller trn web site MSDN
H tr tt hn cho m hnh pht trin ng dng hng kim th (TDD)
N h tr tt cho cc ng dng c xy dng bi nhng i c nhiu lp trnh
vin v thit k m vn qun l c tnh nng ca ng dng
Cc tnh nng ca ASP.NET MVC Framework:
Tch bch cc tc v ca ng dng (logic nhp liu, business logic, v logic giao
din), d dng kim th v mc nh p dng hng pht trin TDD. Tt c cc tnh
nng chnh ca m hnh MVC c ci t da trn interface v c kim th bng
cch s dng cc i tng mocks (mock object) l cc i tng m phng cc tnh
nng ca nhng i tng thc s trong ng dng. Ta c th kim th unit-test cho
ng dng m khng cn chy controller trong tin trnh ASP.NET, v iu gip unit
test c p dng nhanh chng v tin dng. Ta c th s dng bt k nn tng unit-
testing no tng thch vi nn tng .NET.
58 BI 5. TNG QUAN V ASP.NET MVC FRAMEWORK
MVC l mt nn tng kh m rng (extensible) & kh nhng (pluggable). Cc
thnh phn ca ASP.NET MVC c thit k chng c th c thay th mt cch
d dng hoc d dng ty chnh. Ta c th nhng thm view engine, c ch nh
tuyn cho URL, cch kt xut tham s ca action-method v cc thnh phn khc.
ASP.NET MVC cng h tr vic s dng Dependency Injection (DI) v Inversion
of Control (IoC). DI cho php ta gn cc i tng vo mt lp cho lp s dng
thay v buc lp phi t mnh khi to cc i tng. IoC quy nh rng, nu mt
i tng yu cu mt i tng khc, i tng u s ly i tng th hai t mt
ngun bn ngoi, v d nh t tp tin cu hnh. V nh vy, vic s dng DI v IoC
s gip kim th d dng hn.
ASP.NET MVC c thnh phn nh x URL mnh m cho php ta xy dng nhng
ng dng c cc a ch URL xc tch v d tm kim. Cc a ch URL khng cn phi
c phn m rng ca tn tp tin v c thit k h tr cc mu nh dng tn
ph hp vi vic ti u ha tm kim (URL) v ph hp vi lp a ch theo kiu REST.
H tr cc tnh nng c sn ca ASP.NET nh c ch xc thc ngi dng, qun
l thnh vin, quyn, output caching v data caching, session v profile, qun l tnh
trng ng dng, h thng cu hnh
ASP.NET MVC 3 cn b sung mt view engine mi l Razor View Engine cho
php thit lp cc view nhanh chng, d dng v tn t cng sc hn so vi vic s
dng Web Forms view engine.
5.2 XY D NG NG DNG VI ASP.NET MVC
Tnh nng ASP.NET MVC Framework c tch hp sn t phin bn VS Studio
2010 tr i.
5.2.1 To Project vi ASP.NET MVC Web Application
Trong chng trnh Visual Studio 2008 ci t ASP.NET MVC Framework, ta
thc hin: Tp tin New Project Windows C# ASP.NET MVC Web
Application
BI 5. TNG QUAN V ASP.NET MVC FRAMEWORK 59
Hnh 5.2. To ng dng MVC
Khi ta to mt ASP.NET MVC Framework th hp thoi Unit Test xut hin. Ta cn
chn Yes nu mun to Project Test, chn No nu khng mun to mt Unit Test.
Sau khi mt ng dng ASP.NET MVC Web Application c to, ta nhn vo
trong mc Solution Explorer s thy xut hin mc nh 3 th mc: Models, Views,
Controllers cha cc i tng tng ng vi cc thnh phn Models, Views,
Controllers trong m hnh MVC.
Ta c th m rng th mc Controllers s thy HomeController.cs, m rng th
mc Views s thy th mc Home, Shared v Account, m rng th mc Home s
thy About.aspx v Index.aspx
60 BI 5. TNG QUAN V ASP.NET MVC FRAMEWORK
Hnh 5.3. Qun tr c s d liu trong d n dng MVC ca ASP.Net
Ta thc thi ng dng bng cch n F5. Nu l ng dng mi to ln u, ta s
thy thng bo hi c cho php m ch Debug hay khng. Nu ta ng chn
Modify the Web.config file to enable debugging, hoc khng mun debug th chn
Run without debugging.
Hnh 5.4. Minh ha cc bc to mt ASP.NET MVC
BI 5. TNG QUAN V ASP.NET MVC FRAMEWORK 61
Kt qu khi chy ng dng (h5.5) l ng dng c np vo trnh duyt. Trong v
d ny ta ch c 2 trang l Index v About.
Hnh 5.5 Chng trnh MVC u tin
5.3 NH TUYN URL
5.3.1 Gii thiu
ASP.NET MVC Framework 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 Controllers/Actions. V d:
form posts, lin kt v cc li gi AJAX.
Ta 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
62 BI 5. TNG QUAN V ASP.NET MVC FRAMEWORK
/Catalog thnh /Products, 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 Views.
Cc quy tc nh tuyn 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 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 v
khi ng dng bt u, phng thc Application_Start() trong Global.asax.cs s gi
RegisterRoutes to ra bng nh tuyn.rs
Vi ASP.NET MVC Web Application th mc nh Controllers l HomeController,
mc nh ControllerAction l Index, mc nh Id l rng. Ngha l khi gi trang web
c xy dng thng qua template ASP.NET Web. vi http: //localhost/Home/Index/
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 framework chn Controller bng cch nh
gi cc quy tc trong bng nh tuyn theo trt t c sn.
5.3.2 Tm hiu nh tuyn URL
Trnh duyt yu cu mt a ch t controller action trong ASP.NET MVC
Framework c gi l nh tuyn URL (URL routing). Url routing s ch nh yu
cu ti controller action. URL routing s dng mt bng nh tuyn iu khin cc
request. Bng nh tuyn c to khi ng dng bt u c chy ln u tin.
Bng nh tuyn c thit lp trong tp tin Global.asax nh sau:
using System; using System.Globalization; using System.Threading; using System.Web; using System.Web.Mvc; using System.Web.Routing; namespace VPAdmin { // Note: For instructions on enabling IIS6 or IIS7 classic mode, // visit http://go.microsoft.com/?LinkId=9394801
BI 5. TNG QUAN V ASP.NET MVC FRAMEWORK 63
public class VisionPointMVCApplication : System.Web.HttpApplication { public static void RegisterRoutes(RouteCollection routes) { routes.IgnoreRoute({resource}.axd/{*pathInfo}); routes.MapRoute( Default, // Route name {controller}/{action}/{id}, // URL with parameters new { controller = Home, action = Index, id = UrlParameter.Optional}); } protected void Application_Start() { //AreaRegistration.RegisterAllAreas(); RegisterRoutes(RouteTable.Routes); } protected void Application_BeginRequest(object sender, EventArgs e) { HttpContext.Current.Response.AddHeader(Access-Control-Allow-Origin, *); if (HttpContext.Current.Request.HttpMethod == OPTIONS) { HttpContext.Current.Response.AddHeader(Cache-Control, no-cache); HttpContext.Current.Response.AddHeader(Access-Control-Allow-Methods, GET, POST); HttpContext.Current.Response.AddHeader(Access-Control-Allow-Headers, Content-Type, Accept); HttpContext.Current.Response.AddHeader(Access-Control-Max-Age, 1728000); HttpContext.Current.Response.End(); } } }
}
Khi ng dng chy ln u tin, phng thc Application_Start() c gi,
phng thc ny gi mt phng thc khc RegisterRoutes(RouteTable.Routes)
to ra bng nh tuyn.
64 BI 5. TNG QUAN V ASP.NET MVC FRAMEWORK
nh tuyn mc nh chia mt yu cu thnh 3 phn on, mi phn on nm
gia 2 du /. Phn on u tin cha tn mt controller, phn on th 2 cha tn
controller action, phn on th 3 l tham s u vo ca controller action.
V d: vi a ch /Product/Details/3 c hiu l:
Controller = ProductController Action = Detail Id = 3
V d: vi a ch /Employee:
Controller = EmployeeController Action = Index Id =
TM TT
M hnh MVC (Models, Views, Controllers) chia giao din UI thnh 3 phn tng
ng: u vo ca controller l cc iu khin thng qua HTTP request, model cha
cc min logic, view l nhng th c sinh ra tr v cho trnh duyt.
MVC l mt nn tng kh m rng (extensible) & kh nhng (pluggable). Cc
thnh phn ca ASP.NET MVC c thit k chng c th c thay th mt cch
d dng hoc d dng ty chnh. Ta c th nhng thm view engine, c ch nh
tuyn cho URL, cch kt xut tham s ca action-method v cc thnh phn khc.
ASP.NET MVC cng h tr vic s dng Dependency Injection (DI) v Inversion of
Control (IoC). DI cho php ta gn cc i tng vo mt lp cho lp s dng thay
v buc lp phi t mnh khi to cc i tng. IoC quy nh rng, nu mt i
tng yu cu mt i tng khc, i tng u s ly i tng th hai t mt
ngun bn ngoi, v d nh t tp tin cu hnh. V nh vy, vic s dng DI v IoC
s gip kim th d dng hn.
ASP.NET MVC c thnh phn nh x URL mnh m cho php ta xy dng nhng
ng dng c cc a ch URL xc tch v d tm kim. Cc a ch URL khng cn phi
c phn m rng ca tn tp tin v c thit k h tr cc mu nh dng tn
ph hp vi vic ti u ha tm kim (URL) v ph hp vi lp a ch theo kiu REST.
BI 5. TNG QUAN V ASP.NET MVC FRAMEWORK 65
H tr cc tnh nng c sn ca ASP.NET nh c ch xc thc ngi dng, qun l
thnh vin, quyn, output caching v data caching, seession v profile, qun l tnh
trng ng dng, h thng cu hnh
BI TP
1. Trong mt ng dng MVC, liu c tn ti 1 m hnh d liu Models, c n
Controllers, mi Controllers iu khin m Views khng?
2. Views ca MVC c th s dng AJAX, javascript khng?
3. Xy dng ng dng vi ASP.NET MVC Framework th trang web s chy nhanh
hn so vi xy dng trn nn WebForm c?
4. C phi thc hin test v debug trn ASP.NET MVC Framework d dng hn so
vi nn tng WebForm. p: ng. V vic thc hin test v debug trn ASP.NET MVC
Framework ch phi thc hin trn Controller nn d dng kim sot hn so vi thc
hin test v debug trn WebForm.
66 BI 6. Model View Controller
BI 6. Model View
Controller
Hc xong bi ny ngi hc s nm c cc ni dung sau:
Kin thc chuyn su tng thnh phn trong m hnh MVC
Bit cch vn dng thnh tho nhng k thut lin quan m hnh MVC trong bi
lp trnh lin quan.
6.1 TM HIU V CONTROLLER
Controller chu trch nhim iu khin cc tng tc ca ngi dng bn trong
ng dng MVC. Controller s quyt nh ci g c tr v cho ngi dng khi ngi
dng to ra mt request trn trnh duyt.
Mt controller l mt class (C# class hoc VB class). Trong v d ng dng
ASP.NET MVC Web Application mu lun tn tai 2 controller l AccountController.cs v
HomeController.cs nm trong folder Controllers.
M ngun ca tp tin HomeController.cs:
using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.Mvc; namespace MvcApplication6.Controllers { public class HomeController : Controller { public ActionResult Index() { ViewBag.Message = Modify this template to jump-start your ASP.NET MVC
BI 6. Model View Controller 67
application.; return View(); } public ActionResult About() { ViewBag.Message = Your app description page.; return View(); } public ActionResult Contact() { ViewBag.Message = Your contact page.; return View(); } } }
Trong HomeController.cs c 2 phng thc l Index() v About(). Hai phng thc
ny l 2 hnh ng trong controller HomeController.cs n thc hin khi c gi bng
a ch /Home/Index v /Home/About. Bt k phng thc no c thuc tnh public
u l mt hnh ng trong controller.
Ta to mt Controller mi, trong folder Controllers phi chut chn Add New
Item MVC Controller Class
68 BI 6. Model View Controller
Hnh 6.1 To controller tn l SanPhamController.cs
M ngun ca SanPhamController.cs:
using System.Collections.Generic; using System.Web.Mvc; using BanHang.Models; namespace BanHang.Controllers { public class SanPhamController : Controller { DataClassesDataContext data = new DataClassesDataContext(); public ActionResult Index() { // Add action logic here ViewData[Title] = Sn phm; return RedirectToAction(DanhMucLoaiSanPham); } public ActionResult DanhMucLoaiSanPham() { // Code cua ban o day ViewData[Title] = Danh mc loi sn phm; List lsp = data.LoaiSanPhams.ToList(); return View(DanhMucLoaiSanPham, lsp); } public ActionResult DanhSachSanPham(string loaisanpham) { ViewData[Title] = Danh sch sn phm trong loi sn phm;
BI 6. Model View Controller 69
List sp = data.LaySanPhamTuLoaiSanPham(loaisanpham); return View(DanhSachSanPham, sp); } public ActionResult ChiTietSanPham(int id) { ViewData[Title] = Chi tit sn phm; SanPham ctsp = data.LaySanPhamQuaID(id); return View(ChiTietSanPham, ctsp); } } }
6.2 TM HIU V VIEW
Trong controller HomeController.cs, c hai phng thc Index() v About() u
tr v mt view. Mt view cha cc th HTML v c tr v cho trnh duyt. Trong
m hnh MVC th mt view tng ng vi mt trang .aspx trong WebForm.
View phi c to ng v tr ng dn. V d:
controller HomeController.cs th hnh ng HomeController.Index() tr v mt
view nm v tr ng dn \Views\Home\Index.aspx
HomeController.About() s tr v mt view nm v tr ng dn
\Views\Home\About.aspx
Ta to view cho controller SanPhamController.cs, trong SanPhamController.cs c 4
phng thc public l Index(), DanhMucLoaiSanPham(), DanhSachSanPham() v
ChiTietSanPham(), nn trong Views phi to 4 view tng ng l Index.aspx,
DanhMucLoaiSanPham.aspx, DanhSachSanPham.aspx, ChiTietSanPham.aspx bng
cch t folder Views bm phi chut chn Add New Folder v nhp tn folder mi
to l SanPham. T folder SanPham bm phi chut chn Add View
70 BI 6. Model View Controller
Hnh 6.2 Ca s d n dng MVC
Hnh 6.3 To view
DanhMucLoaiSanPham trong folder
SanPham
M ngun tp tin DanhMucLoaiSanPham.aspx:
y l danh mc loi sn phm
BI 6. Model View Controller 71
6.3 TM HIU V MODEL
Mt model trong ng dng ASP.NET MVC cha tt c cc nghip v lun l m
khng c trong controllers v views. Models cha tt c cc tng truy xut d liu
logic v tng nghip v logic. V d, nu s dng LINQ to SQL truy nhp d liu th
phi to LINQ to SQL class (tp tin nh dng dbml) trong th mc Models.
M hnh d liu LINQ ti SQL:
(a)
(b)
Hnh 6.4. M hnh d liu LINQ to SQL
V d: ta to lp tr gip cho vic thao tc vi d liu thng qua LINQ to SQL
M ngun tp tin DataClasses.cs:
using System; using System.Collections.Generic; using System.Linq; using System.Web; namespace BanHang.Models { partial class DataClassesDataContext {
72 BI 6. Model View Controller
public List LayCacLoaiSanPham() { return LoaiSanPhams.ToList(); } public List LaySanPhamTuLoaiSanPham(int id) { return SanPhams.Where(l => l.LoaiSanPham == id).ToList(); } public SanPham LaySanPhamTuID(int id) { return SanPhams.Single(s => s.Id == id); } public void ThemMoiSanPham(SanPham sp) { SanPhams.InsertOnSubmit(sp); } }
}
Vi lp tr gip, ta c th thao tc d dng hn vi CSDL khi cn. V d vi lp
DataCleasses.cs, khi cn truy cp ly thng tin v sn phm c m ID, c th vit
nh sau trong bt k m ngun no ca View (v d view
DanhMcLoaiSanPham.aspx.cs trong folder View)
BI 6. Model View Controller 73
Hnh 6.5. Kt hp d liu vo trong Views\DanhMucLoaiSanPham.aspx.cs
Ta phi sa i li tp tin Views\DanhMucLoaiSanPham.aspx cho ph hp vi
m ngun trn:
y l danh mc loi sn phm
74 BI 6. Model View Controller
Views ch cha tt c nhng g hin th cho ngi dng trn trnh duyt,
Controllers ch cha cc logic m tr v view no cho ngi dng hoc hng t
hnh ng ny n hnh ng khc. Cn li tt c u c vit trong Models.
6.4 CU TRC VIEWS\SHARE\SITE.MASTER
M ngun tp tin SITE.MASTER:
My Sample MVC Application My Sample MVC Application Copyright 2008
BI 6. Model View Controller 75
Hnh 6.6. Kt qu chy ng dng hin th dnh mc sn phm
TM TT
Mt Model trong ng dng ASP.NET MVC cha tt c cc nghip v logic m khng
c trong controllers v views. Models cha tt c cc tng truy xut d liu logic v
tng nghip v logic. V d, nu s dng LINQ to SQL truy nhp d liu th phi
to LINQ to SQL class (tp tin nh dng dbml) trong folder Models.
View l mt trang aspx m khng c m ngun n (code behind):
Tt c cc trang HTMLc to ra v nh dang trang c th c th c thc
hin bn trong View.
View phi c to ng v tr ng dn
Ngi ta c th s dng m ngun chn trc tip (code inline) pht trin cc
trang ng
76 BI 6. Model View Controller
Mt yu cu t View c th ch c thc hin t phng thc ng ca
Controller
Controller chu trch nhim iu khin cc tng tc ca ngi dng bn trong ng
dng MVC. Controller s quyt nh ci g c tr v cho ngi dng khi ngi dng
to ra mt request trn trnh duyt.
BI TP
Thc hin m rng v d trong bi cho cc i tng thm nh
ChungLoaiSanPham, DonDatHang, PhieuNhapHang, HoaDonBanHang.
BI 7. Cp nht d liu vi MVC 77
BI 7. Cp nht d liu vi
MVC
Hc xong bi ny ngi hc s nm c cc ni dung sau.
Phng php thao tc d liu vi m hnh dbml.
Cch thc lin kt cc thnh phn d liu (model), v giao din (View) ti lp
iu khin (Controller).
Thc hin kim th ng dng vi ng dng test.
7.1 THM MI D LIU TRONG MVC
7.1.1 Thm cc phng thc d liu vi m hnh dbml
Vic thm mt phng thc trong Models\DataClasses.cs thc hin ghi nhn
thm mi vo c s d liu Models\DataClasses.cs.
using System; using System.Collections.Generic; using System.Linq; using System.Web; namespace BanHang.Models { partial class DataClassesDataContext { public List LayCacLoaiSanPham() { return LoaiSanPhams.ToList(); } public List LaySanPhamTuLoaiSanPham(int id) { return SanPhams.Where(l => l.LoaiSanPham == id).ToList(); }
78 BI 7. Cp nht d liu vi MVC
public SanPham LaySanPhamTuID(int id) { return SanPhams.Single(s => s.Id == id); } public void ThemMoiSanPham(SanPham sp) { SanPhams.InsertOnSubmit(sp); } } }
7.1.2 Cc hnh ng (action) ti cc b iu khin (controller)
Ta thit lp 2 phng thc thm mi d liu trong lp SanPhamController.cs l
ThemMoiSanPham v Create. Phng thc ThemMoiSanPham tr v mt Views cho
php ngi s dng nhp ni dung sn phm, cn phng thc Create s thc thi
cng vic thm mi sn phm khi ngi dng nhn nt gi i d liu.
using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.Mvc; using System.Web.Mvc.Ajax; using BanHang.Models; namespace BanHang.Controllers { public class SanPhamController : Controller { DataClassesDataContext data = new DataClassesDataContext(); public ActionResult Index() { // Add action logic here ViewData[Title] = Sn phm; return RedirectToAction(DanhMucLoaiSanPham); } public ActionResult DanhMucLoaiSanPham() { // Code cua ban o day ViewData[Title] = Danh mc loi san phm ; List lsp = data.LoaiSanPhams.ToList(); return View(DanhMucLoaiSanPham, lsp); }
BI 7. Cp nht d liu vi MVC 79
public ActionResult DanhSachSanPham(int id) { ViewData[Title] = Danh sch sn phm trong loa san phm ; List sp = data.LaySanPhamTuLoaiSanPham(id); return View(DanhSachSanPham, sp); } public ActionResult ChiTietSanPham(int id) { ViewData[Title] = Chi tit sn phm; SanPham ctsp = data.LaySanPhamTuID(id); return View(ChiTietSanPham, ctsp); } public ActionResult ThemMoiSanPham() { ViewData[Title] = Thm mi sn phm; ViewData[lsp] = new SelectList(loaiSanpham, Id, TenLoaiSanPham); return View(ThemMoiSanPham, ViewData[lsp]); } public ActionResult Create(string TenSanPham, float DonGia, int SoLuong, int loaiSanPham) { SanPham sp = new SanPham(); sp.TenSanPham = TenSanPham; sp.DonGia = DonGia; sp.SoLuong = SoLuong; sp.LoaiSanPham = loaiSanPham; data.ThemMoiSanPham(sp); data.SubmitChanges(); return RedirectToAction(DanhMucLoaiSanPham); } } }
Ta to Views cho php thm mi sn phm c m ngun trong tp tin
Views\SanPham\ThemMoiSanPham.aspx nh sau:.
Tn sn phm:
80 BI 7. Cp nht d liu vi MVC
n gi: S lng: oi sn phm:
Ta c kt qu thc thi nh sau:
Hnh 7.1. Mn hnh thm mi sn phm trong MVC
BI 7. Cp nht d liu vi MVC 81
Ta thit lp cc thuc tnh sau: nh du chn vo checkbox Created a strongly
typed view, chn thuc tnh ca View content l Edit, chn thuc tnh ca View data
class l BanHang.Models.SanPham ri n nt Add thm vo
Views\SanPham\CapNhatSanPham.aspx.
7.2 SA I D LIU TRONG MVC
Ta cn thay i danh sch hin th sn phm cho php cp nht d liu, nh
m ngun sau y:
y l danh sch sn phm c trong chuyn mc ()
Giao din hin th danh sch sn phm c thay i:
82 BI 7. Cp nht d liu vi MVC
Hnh 7.2. Danh sch sn phm c thay i
Sau ta thm 2 phng thc CapNhatSanPham v Update trong lp
Controllers\SanPhamController.cs nh sau:
using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.Mvc; using System.Web.Mvc.Ajax; using BanHang.Models; namespace BanHang.Controllers { public class SanPhamController : Controller { DataClassesDataContext data = new DataClassesDataContext(); public ActionResult Index() { // Add action logic here ViewData[Title] = Sn phm; return RedirectToAction(DanhMucLoaiSanPham); } public ActionResult DanhMucLoaiSanPham() { // Code cua ban o day
BI 7. Cp nht d liu vi MVC 83
ViewData[Title] = Danh mc loi sn phm ; List lsp = data.LoaiSanPhams.ToList(); return View(DanhMucLoaiSanPham, lsp); } public ActionResult DanhSachSanPham(int id) { ViewData[Title] = Danh sch sn phm trong loi sn phm ; List sp = data.LaySanPhamTuLoaiSanPham(id); return View(DanhSachSanPham, sp); } public ActionResult ChiTietSanPham(int id) { ViewData[Title] = Chi tit sn phm; SanPham ctsp = data.LaySanPhamTuID(id); return View(ChiTietSanPham, ctsp); } public ActionResult ThemMoiSanPham() { ViewData[Title] = Thm mi sn phm; //List dulieu = data.LayCacLoaiSanPham(); //var loaiSanpham = from c in data.LoaiSanPhams select c; ViewData[lsp] = new SelectList(loaiSanpham, Id, TenLoaiSanPham); return View(ThemMoiSanPham, ViewData[lsp]); } public ActionResult Create(string TenSanPham, float DonGia, int SoLuong, int loaiSanPham) { SanPham sp = new SanPham(); sp.TenSanPham = TenSanPham; sp.DonGia = DonGia; sp.SoLuong = SoLuong; sp.LoaiSanPham = loaiSanPham; data.ThemMoiSanPham(sp); data.SubmitChanges(); return RedirectToAction(DanhMucLoaiSanPham); } public ActionResult CapNhatSanPham(int id) { ViewData[Title] = Cp nh t sn phm; var spToEdit = (from sp in data.SanPhams where sp.Id = id select sp).First(); ViewData.Model = spToEdit;
84 BI 7. Cp nht d liu vi MVC
return View(); } public ActionResult Update() { return RedirectToAction(DanhMucLoaiSanPham); } } }
Trong lp Controllers \SanPhamController.cs ta t con tr chut bn cnh
phng thc CapNhatSanPham, bm phi chut chon Add View.
Hnh 7.3. Thm mi view cho phng thc CapNhatSanPham
BI 7. Cp nht d liu vi MVC 85
Hnh 7.4 To view CapNhatSanPham t controller CapNhatSanPham
Khi to xong, ta c kt qu Views\SanPham\CapNhatSanPham.aspx nh sau:
86 BI 7. Cp nht d liu vi MVC
Hnh 7.5. M ngun ca tp tin CapNhatSanPham.aspx
BI 7. Cp nht d liu vi MVC 87
7.3 QUY TRNH KIM TRA TRONG NG DNG MVC
Ta c 3 kiu kim tra mc m ngun (kim tra n v, unit test) trong ng dng
ASP.NET MVC c dng kim th cc controllers c xy dng: test view c
tr v t controller action, test d liu tr v t mt