Kĩ thuật lập trình - Bài số 3: Tổng quan về asp.net mvc framework

Tài liệu Kĩ thuật lập trình - Bài số 3: Tổng quan về asp.net mvc framework: Bài số 3 Tổng quan về ASP.NET MVC Framework Table of Contents 1 Tại sao sử dụng ASP.NET MVC.......................................................................................... 2 1.1 ASP.NET MVC là gì................................................................................................................................2 1.1.1 Mô hình MVC cơ bản................................................................................................................................... 2 1.1.2 Một vài đặc tính trong ASP.NET MVC................................................................................................... 2 1.2 Sự khác biệt với WebForm....................................................................................................................3 2 Ví dụ xây dựng ứng dụng với ASP.NET MVC Framework................................................ 4 2.1 Tạo Project với ASP.NET MVC Web Application................................................................

pdf22 trang | Chia sẻ: Khủng Long | Lượt xem: 1220 | Lượt tải: 0download
Bạn đang xem trước 20 trang mẫu tài liệu Kĩ thuật lập trình - Bài số 3: Tổng quan về asp.net mvc framework, để tải tài liệu gốc về máy bạn click vào nút DOWNLOAD ở trên
Bài số 3 Tổng quan về ASP.NET MVC Framework Table of Contents 1 Tại sao sử dụng ASP.NET MVC.......................................................................................... 2 1.1 ASP.NET MVC là gì................................................................................................................................2 1.1.1 Mô hình MVC cơ bản................................................................................................................................... 2 1.1.2 Một vài đặc tính trong ASP.NET MVC................................................................................................... 2 1.2 Sự khác biệt với WebForm....................................................................................................................3 2 Ví dụ xây dựng ứng dụng với ASP.NET MVC Framework................................................ 4 2.1 Tạo Project với ASP.NET MVC Web Application...............................................................................................4 2.2 Tim hiểu định tuyến URL............................................................................................................................................. 8 2.3 Xây dựng mô hình dứ liệu...........................................................................................................................................9 2.3.1 Tao cơ sở dử liệu...........................................................................................................................................9 2.3.2 Sử dụng mô hình LINQ to SQL................................................................................................................ 10 2.4 Tim hiểu về Controllers............................................................................................................................................. 14 2.5 Tim hiểu về Views.........................................................................................................................................................16 2.6 Tim hiểu về Models..................................................................................................................................................... 18 2.7 Câu trúc Views\Shared\Site.Master..................................................................................................................... 20 2.8 Kêtquả............................................................................................................................................................................. 21 3 Câu hỏi ôn tập......................................................................................................................21 4 Tài liệu tham khảo......................................................................................................................... 22 1 Tại sao sử dụng ASP.NET MVC 1.1.1 Mô hình MVC cơ bản MVC viết tắt của các chữ cái đầu của Models, Views, Controllers. MVC chia giao diện UI thành 3 phần tương ứng: đầu vào của controller là các điều khiển thông qua HTTP request, model chứa các mien logic, view là những thứ được sinh ra trả về cho trình duyệt. Lợi ích của việc dùng phương pháp MVC là sự phân đoạn rõ ràng giữa models, views, controllers bên trong ứng dụng. Cấu trúc sạch sẽ giúp cho việc kiểm tra lỗi ứng dụng trở nên dễ dàng hơn. 1.1.2 Một vài đặc tính trong ASP.NET MVC • Tách rõ ràng các mối liên quan, mở khả năng test TDD (test driven developer). Có the test unit trong ứng dụng mà không cần phải chạy Controllers cùng với tiến trình của ASP.NET và có thể dùng bất kỳ một unit testing framework nào như NUnit, MBUnit, MS Test, v.v... • Có khả năng mở rộng, mọi thứ trong MVC được thiết kế cho phép dễ dàng thay thế/tùy biến ( ví dụ: có thể lựa chọn sử đụng engine view riêng, routing policy, parameter serialization, v.v.. • Bao gồm một ánh xạ URL mạnh mẽ cho phép xây dựng ứng dụng với những URL sạch, các URL không cần cs phần mờ rộng ( ví dụ: có thể ánh xạ địa chi /Products/Edit/4 để thực hiện hành động “Edit” của lóp điều khiển ProductControllers hoặc ánh xạ địa chỉ /Blog/SomeTopic để thực hiện hành động “Display Topic” của lóp điều khiển BlogEngineController) • ASP.NET MVC Framework cũng hỗ trợ những file ASP.NET như .ASPX .ASCX và .Master, đánh dấu các tập tin này như một “view template” ( có thể dễ dàng dùng các tính năng của ASP.NET như lồng các trang Master, snippets, mô tả server controls, template, data-binding, localization, v.v... ). Tuy nhiên sẽ Figure 1. Mô hình MVC cơ bản Microsoft Vietnam -D P E Team IBài sổ 3: Tỏng quan về ASP.NET MVC Framework 2 không còn postback và interactive back server và thay vào đó là interactive end-user tới một Controller class ( không còn viewstate, page lifecycle ) • ASP.NET MVC Framework hỗ trợ đầy đủ các tính năng bão mật của ASP.NET như forms/windows authenticate, URL authorization, membership/roles, output và data caching, session/profile state, configuration system, provider architecture v.v... 1.2 Sự khác biệt với WebForm ASP.NET WebForm sử dụng ViewState để quản lý, các trang ASP.NET đều có lifecycle, postback và dùng các web controls, các events để thực hiện các hành động cho UI khi có sự tương tác với người dùng nên hầu hết ASP.NET WebForm xử lý chậm. ASP.NET MVC Framework chia ra thành 3 phần: Models, Views, Controllers. Mọi tương tác của người dùng với Views sẽ được thực hiện hành động trong Controllers, không còn postback, không còn lifecycle không còn events. Việc kiểm tra ( test ), gỡ lỗi ( debug ) với ASP.NET đều phải chạy tất cả các tiến trình của ASP.NET và mọi sự thay đổi ID của bất kỳ controls nào cũng ảnh hường đến ứng dụng. Đối với ASP.NET MVC Framework thì việc có thể sử dụng các unit test có thể thẩm định rất dễ dàng các Controller thực hiện như thế nào. Tính năng ASP.NET 2.0 ASP.NET MVC Kiến trúc chương trình Kiến trúc mô hình WebForm -> Business -> Database Kiến trúc sử dụng việc phân chia chương trình thành Controllers, Models, Views Cú pháp chương trình Sử dụng cú pháp của webform, tất các sự kiện và controls do server quản lý Các sự kiện được điều khiển bởi controllers, các controls không do server do server quản lý Truy cập dừ liệu Sử dụng hầu hết các công nghệ truy cập dừ liệu trong ứng dụng Phần lớn dùng LINQ to SQL class để tạo mô hình truy cập đối tượng Debug Debug chương trình phải thực hiện tất cả bao gồm các lớp truy cập dừ liệu, sự hiển thị, điều khiển các controls Debug có thể sử dụng các unit test kiểm tra các phương thức trong controller Tốc độ phân tải Tốc độ phân tải chậm khi trong trang có quá nhiều các controls vì ViewState quá lớn Phân tải nhanh hơn do không phải quản lý ViewState để quản lý các control trong trang Tương tác với javascript Tương tác với javascript khó khăn vì các controls được điều khiển bởi server Tương tác với javascript dễ dàng vì các đối tượng không do server quản lý điều khiển không khó URL Address Cấu trúc địa chỉ URL có dạng .aspx?& Cấu trúc địa chỉ rành mạch theo dạng Controllers/Action/Id Microsoft Vietnam -D P E Team IBài sỗ 3: Tỏng quan về ASP.NET MVC Framework 3 2 Ví dụ xây dựng ứng dụng với ASP.NET MVC Framework Tính năng ASP.NET MVC Framework hiện giờ mới là bản Beta trong .NET Framework 3.5. Đe xây dựng ứng dụng với ASP.NET MVC Framework cần có môi trường hoạt động .NET Framework 3.5 (cụ the chương trinh sau sẽ xây dựng với Visual Studio 2008 ), tiếp theo cần một MVC Framework. Mặc định trong Visual Studio 2008 chưa có sẵn ASP.NET MVC Web Applications. Có thể download ASP.NET MVC Framework tại địa chi ?Familyĩd=A24DlE00-CD35-4F66-BAA0- 2362BDDE0766&displaylang=en. Cài đặt Visual Studio 2008 sau đó cài đặt ASP.NET MVC Framework. Bây giờ có thể bắt đầu xây dựng ứng dụng với MVC. 2.1 Tạo Project với ASP.NET MVC Web Application Trong chương trình Visual Studio 2008 đã cài đặt ASP.NET MVC Framework: File -> New Project -> Windows c# ASP.NET MVC Web Application ( xem Figure 2). S ta rt P a g e - M icro soft V isu a l S tu d io F ie Edit View Tools T e s t W indow Help a - i * u a W \ s t a r t P a g e c .C o n ten t I Microsoft* Visu Recent Projects XẲHỈTest P ro ject types: O pen: C rea te : Pr. Kr< Getting started W hat's new in Visual C C rea te Your First Appb How Do I . . . ? Learn Visual C~ Download Additional Cx MSDN Forums Visual C - D eveloper Q E x tend Visual Stu<±o E Visual C * V isu a l S tu d io i n s t a l l e d t e m p l a t e s W indows î W eb JçJ] Windows Forms Application ¿73]C lass Library S m art Device , ASP. NET W eb Appfication gèf ASP.NET W eb Service Application S3 Office 1 Ç^jWPF Application (“c*; WPF Browser Application D a tab ase “^ C o n s o le Application 'ty f Excel 2007 W orkbook R eporbng „ £ Outlook 2 007 Add-m '-§^WCF Service Application T est ££?W ord 2007 Docum ent Windows Forms Control Library WCF Workflow & O ther P ro iec t T y œ s M y T e m p la t e s i±j T e s t Pro jects k_J]S earch Online T em p la tes ... A p ro jec t for c reating an application using th e ASP.NET MVC fram ew ork (B eta) (.NET Framework 3.5) Name: Location: Solution Name: D:\ProjectsVHiTest Z] V I B row se ... j HiTest 0 C rea te d rec to ry for solution Figure 2. Tạo một Projects ASP.NET MVC Khi tạo một ASP.NET MVC Framework thì một hộp thoại Unit Test xuất hiện. Chọn Yes nếu muốn tạo một Project Test, chọn No nếu không muốn tạo một Unit Test. ( xem Figure 3) Microsoft Vietnam -D P E Team IBài sỏ 3: Tông quan về ASP.NET MVC Framework V/"* storl Pane Microsoft Vĩsuol Studio File Edit View i a o - kid- & I T ools T e s t Í* W indow Help c .C o n te n t Sta rt P age ^ Microsoft" 4* Visual Studio 2008 1 2 2 2 2 2 2 i ẳ H T e s t O p e n : P ro je c C re a te : P ro je c Ị G etting s ta rte d C r e a t e U n it T e s t P r o je c t Would you like to c re a te a unit te s t p ro je ct fo r thts application? ( • ) Y e s , c r e a t e a u n it t e s t p r o je c t T e s t p r o je c t n a m e : H T T estT es ts 1 T e s t f ra m e w o rk : Visual S tu d io U nit T e s t V .Ị 1 Visual s t u d o U nit T e s t s A dditional In fo W hat’s n ew in Visual C # ? C r e a te Y our F irs t A pplicatx How Do I . . . ? L e a rn Visual C ~ D o w n lo ad A dditional C o n te MSDN F orum s Visual C # D e v e lo p e r C e n te r E x te n d Visual S tud io o N o , d o n o t c r e a te a u n it t e s t p r o je c t C ancel A- v id eo p o d c a s t w hich wiB t mic D o e s n o t Do in th is s ix ữ th e QA te a m 's s e c r e t tec h i ta lk s a b o u t th e ra t io n a le b e fu tu re to co n s id e r w h a t t h e t h a t ta k e s a d v a n ta g e o f rr y in v o lv ed in w riting multi -fr ______________________________________________________________ ị a n e w im p lem en ta tio n o f d la n g u a g e ru n n m g o n .NET. I t s u p p o r t s a n in te r a c tiv e co n so le w ith fully d y n am ic com pilation . In te g ra t i F ram ew o rk m ak e s all .NET lib raries e asily av a ila b le to P y th o n p ro g ra m m e rs . Dynam ic Lan g u ag e Runtim e Beta availab le for download. W ed , 10 D ec 2 0 0 8 2 2 :4 0 :0 0 z - T h e D ynam ic L a n g u a g e R untim e e n a b le s la n g u a g e d e v e lo p e rs to m or la n g u a g e s fo r th e .NET p la tfo rm . I t p ro v id e s DLR c o m p o n e n ts , a n d o p e n s o u rc e im p le m e n ta tio n s o f Ir d o c u m e n ta tio n , a n d sa m p le s . Figure 3. Tạo Unit Test cho ASP.NETMVC Sau khi một ứng dụng ASP.NET MVC Web Application được tạo, nhìn vào trong mục Solution Explorer sẽ thấy xuất hiện mặc định 3 thư mục: Models, Views, Controllers chứa các đối tượng tương ứng với các thành phần Models, Views, Controllers trong mô hình MVC. Mờ rộng folder Controllers sẽ thấy HomeController.es, mờ rộng Views sẽ thấy folder Home, Shared và Account. Mở rộng folder Home sẽ thấy About.aspx và Index.aspx ( xem hình Figure 4 ) Microsoft Vietnam —DPE Team IJBài sổ 3: Tỏng quan về ASP.NET MVC Framework 5 Solution Explorer-Solution'BanHang'(2 pr... ▼ -a X a j a p Solution 'BanHang' (2 projects) B BanHang SI S i Properties ffl References Q LS App_Data S) I j (S Content S ■ L3r Controllers ^ AccountController.es 'i )^ HomeController.es □ Models IB □ Scripts S Views § <5 •6 Ê3 Account IB ¿ j ChangePassword.aspx (B ¿H ChangePasswordSuccess.aspx ffi Login.aspx ffl [HU Register.aspx G3 Home Si ID About, aspx SI m Index.aspx 3 \Jjr Shared SI lHH Error.aspx SI 33 LoginUserControl.ascx SI n Site.Master ;jj» Web.config GÌ jif] Default.aspx ạ Global.asax ijj* Web.config B BanHang.Tests SB Properties SI References ffl Cà Controllers App.config AuthoringTests.txt Figure 4. Solution Explorer MVC Chạy ứng dụng bang cách an F5. Neu là ứng dụng mới tạo lần đầu thì sẽ có thông báo hỏi có cho phép mở chế độ Debug hay không? Neu đồng ý chọn “Modify the Web.config file to enable debugging”, ko muon debug chọn “Run without debugging”. ( xem Figure 5). Microsoft Vietnam —DPE Team \Bui SO 3: Tỏng quan v ề ASP.NET MVC Framework Tools Test Window Help Any CPU c.Content Idi0'2008 MSDN: Visual c# Headlines 10-4 Episode 1: Working with the Visual Studio 2010 CTP VPC Solution Explorer - Solution 'HiTest' (2 proj... a j i» SM» J Solution 'HiTest' (2 projects) Ei ,'ỊỊ HfTest D eb u g g in g Not E n a b le d 7 X The page cannotbe run in debug mode because debugging is not enabled in the Web.config file . What would you like to do? Modify the Web.config file to enable debugging. ; , Debugging should be disabled in theWeb.config file beforedeploying the Web site to a production environment. O without debugging. (Equivalent to Ctrl+F5) ffi B as ffi œ a ffi ffl :~JL Properties •wi References [^ j AppJData 1_J Content a Controllers r J Models r~3 Scripts I i Views 1^ 1 Default.aspx 1 Global.asax Web.config OK Cancel I see m a t L1IMỤ querre rca rranow you to sraeTsretncnETSTncnrrrasKS normally invo lved in Iron Python Thu, 18 Sep 2008 08:40:08 z - IronPython 2.0 Has shipped. IronPython is a new imple language running on .NET. I t supports an interactive console with fully dynamic compile Framework makes all .NET libraries easily available to Python programmers. Dynamic Language Runtime Beta available for download. Wed, 10 Dec 2008 22:40:00 z -The Dynamic Language Runtime enables language dev languages for the .NET platform. I t provides DLR components, and open source implen documentation, and samples. Figure 5. MỞ Debug Irung Web.config ASP.NETMVC Ket quả khi chạy ứng dụng ( xem Figure 6) là ứng dụng được load vào browser. Trong ví dụ này chỉ có 2 trang là Index và About. B 3 HiTest.Tests I® Properties B l 5 References •O HiTest •t_3 Microsoft.VisualStudio.Qual -O System •O System.Core -O System.Web.Abstractions •O System.Web.Extensions •O System.Web.Mvc •CJ System.Web.Routing 1/^ Controllers HomeControllerTest.cs App.config AuthoringTests.txt I to r Page - Mozilla Fircfox E»le Edit Ytew H istory Bookm arks Tools Help - O X ¿ ¡ 5 I Q |h t tp : /A > c a f io s t : 1 7 2 7 / _J y Most Visited 3^ ^Getting Started Latest Headlines 'Cĩ ~ 1 llcl-l<■ ASP.NET M» r - ~. ASP.NET My f T Download d * ASP.NET My f- Ì ASP.NET MV - Understand! I • Home —O My Sample MVC Application c L o g in 3 A b o u t U s Welcome to ASP.NET MVC! To learn more about ASP.NET MVC visit http;//asp.net/mvc. My Sample MVC Application © Copyright 2008 Microsoft Vielnum —DPE Team IjBui so 3: Tổng quan về ASP.NET MVC Framework Figure 6. Thực thi ứng dụng mẫu ASP.NET MVC 2.2 Tìm hiểu định tuyến URL Browser yêu cầu một địa chi từ controller action trong ASP.NET MVC Framework được gọi là định tuyến URL ( URL routing). Url routing sẽ chỉ định request tới controller action. URL routing sử dụng một bảng định tuyến để điều khiển các request. Bảng định tuyến được tạo khi ứng dụng bắt đầu được chạy lần đầu tiên. Bảng định tuyến được thiết lập trong file Global.asax using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.Mvc; using System.Web.Routing; namespace HiTest { // Note: For instructions on enabling IIS6 or IIS7 classic mode, // visit public class MvcApplication : System.Web.HttpApplication { public static void RegisterRoutes (Rc Let routes) { routes.IgnoreRoute("{resource}.axd/{*pathlnfo}"); name routes-MapRoute( "Default", "{controller}/{action}/{id}", parameters new { controller = "Home", action = "Index", id = "" } // Parameter defaults ) ; // Route // URL with 1 protected void Application_Start() { RegisterRoutes( .Routes); Khi ứng dụng chạy lần đầu tiên, phương thúc Application_Start() được gọi, phương thức này gọi một phương thức khác RegisterRoutes(RouteTable.Routes) để tạo ra bảng định tuyến. Định tuyến mặc định chia một request thành 1 phân đoạn, mỗi phân đoạn nằm giữa 2 dan Phân đoạn đầu tiên chứa tên một controller, phân đoạn thứ 2 chứa tên controller actỉon, phân đoạn thứ 3 là tham số đầu vào của controller action. Ví dụ: với địa chi /Product/Details/3 được hiểu là: Controller = ProductController Action = Detail Id = 3 Controller mặc định sẽ là HomeController, Action mặc định là Index, Id mặc định là -> 1727/ Ví dụ: với địa chỉ /Employee: Microsoft Vietnam —DPE Team IJBài sổ 3: Tỏng quan về ASP.NET MVC Framework 8 Controller = EmployeeController Action = Index Id = "" 2.3 Xây dựng mô hình dữ liệu 2.3.1 Tạo cd sở dữ liệu Từ AppJData click phải chuột chọn Add -> New Item -> SQL Server Database đặt tên Databasemdf Odd N e w H e m - Ban Hang 7 X Categories: Templates: m B S Visual C# Visual Studio installed templates Code Data J SQL Server Database Jj] Text File General j/ ] XML File XML Schema S. Web Windows Forms My Templates WPF . j Search Online Templates...Reporting Workflow An empty SQL Server database Name: Databaselmdf ] I Add 1 Cancel I r y n n n j r l u i ' i r t r i n u — r a r Figure 7. Tạo cơ sở dữ liệu Database.mdf trong App_Data Trong cơ sở dữ liệu Database.mdf tạo 2 table: ( xem Figure 8, Figure 9 ) Microsoft Vietnam -D P E Team IBài sỏ 3: Tông quan về ASP.NET MVC Framework BanH anq - M icroso ft V isu a l S tu d io File Ecfct Vtew P ro je c t Build D ebug D a ta S ' ' 3 a m ể [£ H a ã a . Table D esigner Tools T e s t ► D ebug W indow Help - Any CPU • c .C o n te n t • <5:5* H i* dbo-Tab*e2- T__DATABASC.MDT)* stvtp C o t ^ r Name D a ta T ype » ? Id I int □ J T enSanPham DonG*a SoLuong LoaiSanPham Column P ro p e rtie s n v a r ch a r (300) f loa t int Int 0 0 0 0 n I M U . - ] ------------------------------------------------------------------------------------------------------ □ ( G e n e r a l ) (Nam e) A fow N ufe Id D a ta T ype in t D efau lt V alue o r Binding El T a b le D e s ig n e r <d a ta b a s e d e fa u lt» 0 C om pu ted Column Specification C o n d en sed D a ta T ype n t DesuipUu«i 0 □ F u l- te x t Specification No H as Non-SQL S e rv e r Subscriber Id en tity Specification Yes (Is Id en tity ) /*"" Id en tity In c re m e n t » Id e n tity S e e d I u flm !<Untih<) Figure 8. Bảng SanPham trong cơ sở dữ liệu Database.mdf B a n H ang - M ic r o s o f t V is u a l S tu d io File Edit View P ro je c t Budd D ebug D a ta T able D esigner Tools T e s t W indow Help .3 ' Jj H ► D ebug - A nyCPU [T| =3 3 & □ ; y-l d b o .L o d (SdnP ...D A T A B A SE . M D F) s t a r t P a g e J ÿ c .C on te n t D a ta T ype f w Id int □ ] TenLoaiSanPham nvarchar(lO O ) I'd □ Column P ro p e rtie s IẼÌ1ỈI ] d efau l E l C om pu ted Column Specification C o n d en sed D a ta T ype Description I D eterm inistic I I DT5-published E l F u l- te x t Specification ■ H as Non SQL S erver Su □ Id en tity S ped fica tion (Is Id en tity ) Id en tity In a e m e n t Id e n tity S eed ■ In d ex ab le ■ M erge-published N o t For R eplication Õ Ino No Figure 9. Bảng LoaiSanPham trong cơ sở dữ liệu Database.mdf 2.3.2 Sử dụng mô hình LINQ to SQL Trong Solution Explorer click phải chuột vảo Models -> Add -> New Item ->LINQ to SQL Classes (Figure 10) Microsoft VieCnum —DPE Team IBài su 3: Tỏng quun về ASP.NET MVC Framework 10 </* BanHang - Microsoft V isual Studio Fite Edit View Project Budd Debug Tools T est Window Help • jp v JiJ v 3 3 ► Debug g . S t a r t P a g e Any CPU - J ÿ c .C ontent rr i 4 ^ , ' Microsoft* * Visual Studioc 2008 Solution Explorer - SoL f t E T » Solution BanHanç (3 ^ B an H an g Ltl :m Propertie ¡♦I Refer enc Recent Projects J j BanHang [¿ÄHTest Open: C reate: Rdd Neui Item - BanHang Categories: Templates: Getting Started W hat's new in Visua C reate Your R rst Aj How Do I . .. ? Learn Visual Cif Download Additiona M5DN Forums Visual C z Devetopei Extend Visual Studic Q Visual C # [£: MVC View User Control ¿3] AJAX Cfcent Behavior Code 3 JAJAX Client Control 3 jA JA X C IentU brary Data ! ~] AJAX M aster Page AJAX Web Form General AJAX-enabled WCF Service ■V] Application M anifest F ie ffl Web c ^ | Assembly Information File ^ B r o w s e r =ile Windows Forms c^J Class ^ Class Diagram WPF c*} Code File j y j DataSet Reporting Workflow T ? Debugger Visualizer HTM Page Interface |^ | Generic H ander Installer Class ¿ jJJS c n p t Fie " / ¿ LINQ to SQL C lasses') Nested Master Page H3 k e p o rt J ¿ j Report Wizard Resources Rle Site Map ^ S k i n File I J SQL Server D atabase A D Style Sheet =1 Text File LINQ to SQL d a sse s mapped to relational objects. ^ Da taC lassesj dbmTj Figure 10. Tao LINQ to SQL Classes Microsoft Vietnam —DPE Team I Bui sô 3: Tông quun vê ASP.NET MVC Framework 11 Từ Server Explorer -> Kéo thả 2 tables LoaiSanPham, SanPham vào file DataClasses.dbmI Bon Han g - M icrosoft V isu a l S tu d io - Æ* X File Edit View P ro jec t Build D ebug Tools T e s t Window Help . J3 - - 3 £ & * ► f*buo S erv e r Explorer T ? X 33 %1Ế B S Ut D a ta b a se .m d f $ [_ J D a ta b a se D iagram s S ^ 3 Tables J LoaiSc'-Pham j u 2 ] TenLoaiSanPham " 3 SanPham SI Id S 3 T enSanPham [ | ] D onG a GO SoLuong S 3 LoaiSanPham V*ws $ □ S to red P ro ced u res $ □ Functions S □ Synonym s a LA T ypes a U Assem blies .*5^ S ervers a 4 g'3* ^ S erv e r Explorer R eady T he O b jec t R e la tio n a l D e s ig re r a llo w s y o u to v isual c la s s e s In y o u r c o d e . S e rv e rE x p lo re r T o o lb o x C re a te m e th o d s by d ra g g in g item s from S e rv e r E xp lo rer ito lesign surface. A Solution E xplorer - Solution "BanHang' (2 p r . .. ▼ ¡a j > a a m » !=| B a n H a n g ffl P ro p er b e s a R e fe re n c e s S xJi App_D ata S I j j D a ta b a se .m d f ffl [ _ J C o n ten t E) LJS' C on tro le rs ^ AccountControU er.cs cJSj) H om eC on tro le r.es SanPham C ontro ller.es B Models »■ I a f a sen p ts - 1=1 Views 5 Ld A ccount a £U C h an g eP assw o rd .a sp x a I d C h angeP assw ordS uccess .c a ¿2 i Login, asp x a R eg is te r.a sp x e L J r H o m e a q ] A bout, asp x a ¿ l i In d e x .a sp x S Ld SanPham a liiJ In d e x .a sp x | B LJ S hared a ~]j Err o r. asp x a .3- L oginU serC ontrol.ascx a [ j S ite .M aster W eb.config ffi D efau lt, a sp x El G lobal.asax li£j) G Iobal.asax .es W eb.config ¡3 ^ B anH ang .T ests , l+i -^1 Prnnertw*: Figure 10. Tạo file DataClasses.dbml sử dụng 2 bảng LoaiSanPham và SanPham Trong file DataCIasses.dbml click phải chuột chọn Add -ỳ Association để tạo liên kết giữa 2 table. (Figure 11) Microsoft Vieínum —DPE Team IBài su 3: Tỏng quun về ASP.NET MVC Framework 12 <✓» HanHrinn M icm so ft V isu a l S tu d io File Edit View P ro jec t BuM D ebug Tools T e s t Window M dp .j] - _iJ - A ề» -J - ► Debu9 D d t d C l a s s e s ^ J b m r s ta r t P ag e * Jỳ L ogn S e rv e r E xplorer -w S3 t*,«l e o ' D ata C onnections fci 0 ^ D a ta b a se .m d f * [ ^ j D a ta b a se D iagram s 3 □ T ab les $■ "ZD LoaiSanPham lU Id T l TenLoaiSanPham Q 3 SanPham GD Id T l T enSanPham (Tl DonGia 3 S o tu o n g m LoaiSanPham a C 3 Views ffl C l S to re d P ro ced u res £ [_ J Functions a Q Synonym s ffl □ T y p es dd Q j Assem blies Q , ^ | S ervers a *§ g io d n h ■^••■nstÆWn - ^ S e r v e r Explorer Ready L o a iS a n P h a m s P ro p e r tie s t ^ I d jjf* T enLoalSẽnPham S a n P h a m © ] B P ro p e r tie s t ấ l d i j ? T enSanPham D onG ia S oL uong '*j* L oaiSanPham R s s o c i a t i o n E d i t o r Association P roperties : ▼ X : Solution E xp lo re r-S o lu tio n B a n H a n g '(2 p r . . . ~ 1 X a I a I El a I » ã BanHang I P ro p e rtie s - 1 R e fe re n c e s __ Ann Hafa___ Child C lass: ~ h : SanPham 10 LoaiSanPham P ro p e rtie s SanPham P ro p erties Id I OK I [_ Cancel J - ạ —va s an p n am ----------------------------- a oj In d e x .a sp x a \& S hared l±J ¿» ] C rro r.esp x ±~ LoginU serC ontrol.ascxa ị’ LoginUserCor ffl □ S ite .M aster i£^> W eb.config a __l] D e fa i i t .a s p x B G lobal.asax ^ G loba l.asax .es __ _ y W eb .con fig B anH ang .T ests J ±L '^ 1 Prrvwfú**; J-il" Figure 11. Tạo liên kết giữa các bảng trong DataClasses.dbmỉ Ket quả được như Figure 12 dưới đây. Ban Hang - Microsoft V isua l studio File Edit View Project Build Debug Tools Test Window Help *> ’ ► Debug » Any CPU V' DataClasses.dbml* start Page H -------------------------------------------------------- - J ỳ c.Content Figure 12. cấu trúc của DataClasses.dbml Microsoft Vielnum —DPE Teum I Bài so 3: Tung quan về ASP.NET MVC Framework 13 2.4 Tìm hiểu về Controllers Controller chịu trách nhiệm điều khiển các tương tác của người dùng bên trong ứng dụng MVC. Controller sẽ quyết định cái gì được trả về cho người dùng khi người dùng tạo ra một request trên browser. Một controller là một class ( c# class hoặc VB class). Trong ví dụ ứng dụng ASP.NET MVC Web Application mẫu luôn tồn tại 2 controller là AccountController.es và HomeControIIer.es nằm trong folder Controllers HomeController.es using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.Mvc; using System.Web.Mvc.Ajax; namespace HiTest.Controllers { [HandleError] public class HomeController : Controller { public Index 0 { ViewData["Title"] = "Home Page"; ViewData["Message"] = "Welcome to ASP.NET MVC!"; return ViewO; I public ActionResuit About 0 I ViewData["Title"] = "About Page"; return ViewO; 1 I } Trong HomeController.es CÓ 2 phương thức là IndexO và About(). Hai phương thức này là 2 action trong controller HomeControlIer.es nó thực hiện khi được gọi bằng địa chỉ /Home/Index và /Home/About. Bất kỳ phương thức nào có thuộc tính public đều là một action trong controller. Tạo một Controller mới Trong folder Controllers phải chuột chọn Add -> New Item -> MVC Controller Class ( Figure 13) Microsoft VieCnum —DPE Team IBài SU 3: Tỏng quun về ASP.NET MVC Framework 14 Rdd Ne LU Item - Ban Hang ? X Categories: Templates: m □ & Visual C S Code Data General ffl Web Windows Forms WPF Reporting Workflow visual btuoto installer templates ¡rrf] Web Form j : Web User Control i t ] MVC Controller Class 'J * n ^ ^ ie w Master Page ill) MVC View User Control ¿-SjAJAX Client Control n AJAX Master Page AJAX-enabled WCF Service erf] Assembly Information File Class Code File ^Debugger Visualizer HTML Page 1 » . r_____________________________________ I " ! Master Page l|2l Web Content Form ~ | MVC View Content Page ¡nil MVC View Page .3 ] AJAX Client Behavior SjjA JAX Client Library ¡f ]^ AJAX Web Form Application Manifest File ^ B ro w se r File ^¡j Class Diagram [|3| DataSet ^ Generic Handler ¡jä] Installer Class MVC Application Controller Class (Beta) (ASP.NET MVC Framework requires Controller names to be suffixed with "Controller") Name: f SanPhamConfr oller, es Add Cancel Figure 13. Tạo controller tên là SanPhamController.es SanPhamContxoller.es 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 Sanl-hamControllei : Controller { DataClassesDataContext data = new DataClassesDataContext(); public Index() { > // Add action logic here ViewData["Title"] = "Sản phẩm"; return RedirectToAction("DanhMucLoaiSanPham"); public I DanhMucLoaiSanPham() { // Code cua ban o day ViewData["Title"] = "Eanh muç loaị San phâm"; Isp = data.LoaiSanPhams.ToList(); return View("DanhMucLoaiSanPham", Isp); } public DanhSachSanPham(string loaisanpham) { ViewData["Title"] = "Canh sach San phâm trong loai San phâm"; Microsoft Vielnum —DPE Team \Bài su 3: Tổng quan v ề ASP.NET MVC Framework sp = data.LaySanPhamTuLoaiSanPham(loaisanpham); return View("DanhSachSanPham", sp); } public ChiTietSanPham(int id) I ViewData["Title"] = "Chi tiêt San phâm"; ctsp = data.LaySanPhamQualD(id); return view("ChiTietSanPham", ctsp); 1 I } 2.5 Tìm hiểu về Views Trong controller HomeController.es, cả hai phương thức IndexO và About() đều trả về một view. Một view chứa các thè HTML và được trả về cho browser. Trong mô hình MVC thì một view tương ứng với một trang .aspx trong WebForm. View phải được tạo đúng vị trí đường dẫn. Ví dụ với controller HomeController.es thì hành động HomeController.IndexO trả về một view nằm ờ vị trí đường dẫn \Views\Home\Index.aspx và HomeController.AboutO sẽ trả về một view nằm ờ vị trí đường dẫn \Views\Home\About.aspx View About.aspx <%@ Page Language="C#" MasterPageFile="~/Views/Shared/Site-Master" AutoEventWireup="true" CodeBehind=”About.aspx.cs" Inherits="HiTest-Views.Home-About" %> About Us TODO: Put about content here. View Index.aspx <%@ Page Language="C#" MasterPageFile="~/Views/Shared/Site-Master" AutoEventWireup="true" CodeBehind="Index.aspx.cs" Inherits="HiTest.Views.Home.Index" %> To learn more about ASP.NET MVC visit <a href="" title="ASP.NET MVC Website"> Tat cả các thuộc tính nằm giữa 2 thẻ đều có định dạng HTML và có thể tùy ý sửa đổi theo ý muốn. Tạo view cho controller SanPhamController.es, trong SanPhamController.es có 4 phương thức public là Index(), DanhMucLoaiSanPhamO, DanhSachSanPhamO và ChiTietSanPhamO nên trong Views phải tạo 4 view tương ứng là Index.aspx, DanhMucLoaiSanPham.aspx, DanhSachSanPham.aspx, ChiTietSanPham.aspx bằng cách từ Microsoft Vietnam -D P E Team IBài sổ 3: Tỏng quan về ASP.NET MVC Framework 16 folder Views click phải chuột chọn Add -> New Folder nhập tên folder mới tạo là SanPham. Từ folder SanPham click phải chuột chọn Add -> View... (Figure 14) (ví dụ tạo view DanhMucLoaiSanPham) R dd VieLU ? X View name: DanhMucLoaiSanPhaml Ỉ~1 Create a strongly-typed view View data dass: 0 Select master page -/Views/Shared/Site. Master Q Add Cancel I Figure 14. Tạo view DanhMucLoaiSanPham trong folder SanPham Index.aspx <%@ Page Title="" Language="C#" MasterPageFile="~/Views/Shared/Site.Master" AutoEventWireup="true" CodeBehind="Index.aspx.cs" Inherits="BanHang.Views.SanPham.Index" %> Đâỵ la'trang chinh cuã san phâm DanhMucLoaiSanPham.aspx <%@ Page Title="" Language="C#" MasterPageFile="~/Views/Shared/Site.Master" AutoEventWireup="true" CodeBehind="DanhMucLoaiSanPham.aspx.cs" Inherits="BanHang-Views.SanPham.DanhMucLoaiSanPham" %> <asp: Content ID="viewDanhMucLoaiSanPham" ContentPlaceHolderID="MainContent" runat="server"> Đây la'danh muç loaị san phârà <% foreach (var lsp in ViewData.Model) { %> <%= Html.ActionLink(lsp.TenLoaiSanPham, "DanhSachSanPham/" + lsp.TenLoaiSanPham, "SanPham") %> DanhSachSanPham.aspx <%@ Page Title="" Language="C#" MasterPageFile="~/Views/Shared/Site.Master" AutoEventWireup="true" CodeBehind="DanhSachSanPham.aspx.cs" Inherits="BanHang.Views.SanPham.DanhSachSanPham" %> <asp:Content ID="viewDanhSachSanPham" ContentPlaceHolderID="MainContent" runat="server"> Đây la'danh sach san phâm co'trong chuyên muọ ChiTietSanPham.aspx Microsoft Vietnam -D P E Team IBài số 3: Tổng quan về ASP.NET MVC Framework 17 <%@ Page Title="" Language="C#" MasterPageFile="~/Views/Shared/Site.Master" AutoEventWireup="true" CodeBehind="ChiTietSanPham.aspx.cs" Inherits="BanHang.Views.SanPham.ChiTietSanPham" %> <asp: Content ID="viewChiTietSanPham" ContentPlaceHolderID="MainContent" runat="server"> Đâỵ la'Chi tiêt San phâm 2.6 Tìm hiểu về Models Một model trong ứng dụng ASP.NET MVC chứa tất cả các nghiệp vụ logic mà không có trong controllers và views. Models chứa tất cả các tầng truy xuất dừ liệu logic và tầng nghiệp vụ logic. Ví dụ, nếu sử dụng LINQ to SQL để truy nhập dừ liệu thì phải tạo LINQ to SQL class ( file định dạng dbml) trong folder Models. Mô hình dừ liệu LINQ to SQL ( Figure 15 ) Solution Explorer - Solution 'BanHang' (2 projects) ▼ -B X ã I u? m I m m * Solution 'BanHang' (2 projects) Ẻ BanHang Ẹ câl Properties É ^ References (±1 uQ App_Data Ệ □ Content Ẹ Conừollers :*v) AccountController. cs c*y HomeContoiler.cs SanPhamConfroller.es s 1^ 5 Models Ồ ^ DataClasses.es ^ DataClasses.dbml.layout DataClasses. designer. cs ffl □ Scripts s Views á Account IB ChangePassword.aspx ặ ifil ChangePasswordSuccess.aspx È £ll Login.aspx S3 Register.aspx a Home SI lH About, aspx SI iH Index.aspx 0 {¿¡I SanPham IB Lfj ChiTietSanPham.aspx ạ DanhMucLoaiSanPham. aspx Ẹ DanhSachSanPham.aspx S3 i n Index.aspX Figure 15. Mô hình dữ liệu LINQ to SQL Xây dựng Iđp trớ giúp cho việc thao tác vdi dữ liệu thông qua LINQ to SQL DataClasses.es using System; using System.Collections.Generic; using System.Linq; namespace BanHang.Models Microsoft Vietnam -D P E Team IBài số 3: Tổng quan về ASP.NET MVC Framework 18 partial class DataClassesDataContext { public LayCacLoaiSanPham() return LoaiSanThams.ToList(); public LaySanPhamTuLoaiSanPham(string loaisanpham) return SanPhams.Where(1 => 1.LoaiSanPhaml.Id == loaisanpham) .ToList (); public LaySanPhamQualD(int id) return SanPhams.Single(s => s.Id == id); Với lớp trợ giúp có thế thao tác dề dàng hơn với CO' sở dữ liệu khi cần . Chăng hạn với lóp DataClasses.es ờ trên khi cần truy nhập để lấy thông tin về sản phẩm có mã Id , có thể viết như sau trong bất kỳ một code -behind nào của Views (ví dụ với view DanhMucLoaiSanPham.aspx.es trong folder Views): BanHang - Microsoft V isual Studio File Edit View Refactor Project Build Debug Tools Test Window Help ■ 3 ' ¿ A ' 3 A & A A * ) ' • - ► Debug * Any CPU m % b . " & I 1 t d m Start Page DanhMucLoaiSanPham.aspx.cs DanhMud.oa.SanPham.aspx SanPhamController.es Sgt; BanHang. Views. SanPham. DanhMucLoaiSanPham V VPage_LoadO Q using System; using System.Collections.Generic; using System.Linq; using System.Web; using System. Web .Mvc; Lusing BanHang.Models; □ namespace BanHang.Views.SanPham { public partial class DanhMucLoaiSanPham : ViewPage > { public void Page_Load() < li3tLoaiSanPham.DataSource = ViewData.Model; listLoaiSanPham.DataBind () ;| > } > Figure 16. Binding data vào trong ViewADanhMucLoaiSanPham.aspx.es Khi đó ta phải sửa đổi lại file Views\DanhMucLoaiSanPham.aspx cho phù hợp với code trên <%0 Page Title="" Language="C#" MasterPageFile="~/Views/Shared/Site.Master" AutoEventWireup="true" CodeBehind="DanhMucLoaiSanPham.aspx.cs" Inherits="BanHang.Views.SanPham.DanhMucLoaiSanPham" %> <asp: Content ID="viewDanhMucLoaiSanPham" ContentPlaceHolderID="MainContent" runat="server"> Microsoft Vietnam -D P E Team IBài sd 3: Tông quan vê ASP.NET MVC Framework 19 Đâỵ la'danh muç loaị San phâm <asp:PlaceHolder ID="itemPlaceHolder" runat="server"X/asp: PlaceHolder> <%= Html.ActionLink(Eval("TenLoaiSanPham"), "DanhSachSanPham/" + Eval("TenLoaiSanPham"), "SanPham") %> Views chỉ chứa tất cả những gì hiển thị cho người dùng trên browser, Controllers chỉ chứa các logic mà trả về view nào cho người dùng hoặc hướng từ action này đến action khác. Còn lại tất cả đều được viết trong Models. 2.7 Cấu trúc Views\Shared\Site.Master <%@ Master Language="C#" AutoEventWireup="true" CodeBehind="Site.master.cs" Inherits="BanHang.Views.Shared.Site" %> <!DOCTYPE html PUBLIC "-//W3C//DTE XHTML 1.0 Strict//EN" ""> My Sample MVC Application Microsoft Vietnam -D P E Team IBài số 3: Tỏng quan về ASP.NET MVC Framework 20 My Sample MVC Application Scopy; Copyright 2008 >3- O a n h m u ũ c lo a ũ i s a ũ n p h â ũ m - M o z il la F i re fo x --------------------------------------------------------------------------------------------------------------------------- : 0 e Edit View « sto ry Bookmarks Tools Help ệQP c \AJ 1 ủ ứ * |G|- TMVCFrameworkretui \Jk Most Visited ^ Getting s tarted ầ L Latest Headknes L_ ASP.NETMVCFr... ASP.ÆTMVCNo . 32BmldmgaSmple ... [p] ASP.NETMVCFt... [ i ] ASP.NET MVC Ft... 1_3 Developer Notes . ASP.NET MVC Fr. 1_J D anh m ụ . [ L o g in ] My Sample MVC Application Figure ¡7. Ket quả chạy ứng dụng khi thêm SanPham vảo ứng dụng ASP.NETMVC 3 Câu hỏi ôn tập Hỏi: Views của MVC có thể sử dụng AJAX, javascript không? Đáp: Được, về bản chat, view trong ASP.NET MVC Framework cũng là một trang .aspx như với mô hình WebForm vì thế có thể thực hiện các tác vụ tương tự. Vì thế việc sử dụng jQuery, ASP.NET AJAX, và javascript đều có thể thực hiện được. Hỏi: Xây dựng ứng dụng với ASP.NET MVC Framework thì trang web sẽ chạy nhanh hơn so với xây dựng trên nền WebForm cũ? Đáp: Chưa hẳn là thế. Neu xây dựng trang web với nền tảng WebForm mà sử dụng ít các controls, usercontrols hoặc ít events thì giá trị ViewState và PostBack không lớn nên sự thực thi không hẳn đã chậm. Trang web xây dựng theo nền WebForm chỉ thực hiện chậm khi giá trị của ViewState là quá lớn. Hỏi: Có phải thực hiện test và debug ừên ASP.NET MVC Framework dề dàng hơn so với nền tàng WebForm. Đáp: Đúng. Vì việc thực hiện test và debug trên ASP.NET MVC Framework chỉ phải thực hiện trên Controller nên dễ dàng kiểm soát hơn so với thực hiện test và debug trên WebForm. Microsoft Vietnam -D P E Team IBài sổ 3: Tỏng quan về ASP.NET MVC Framework 21 4 Tài liệu tham khảo 0/14/asp-net-mvc-framework.aspx Microsoft Vietnam -D P E Team IBài sổ 3: Tỏng quan về ASP.NET MVC Framework 2 2

Các file đính kèm theo tài liệu này:

  • pdfaspnet_3_5_lesson_03_5685.pdf
Tài liệu liên quan