BG LapTrinhWeb

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