You are on page 1of 43

Đại học Sư phạm Kỹ thuật TP HCM Khoa Công nghệ thông tin

----o0o----

ASP.NET MVC
Thực hiện: Trần Thanh Nông Nguyễn Văn Hùng Trần Anh Tuấn Nguyễn Trường Bình GVGD: Nguyễn Minh Đạo 07110086 07110053 07110149 07110008

Nội dung
Tổng quan về MVC Cơ chế hoạt động của ASP.NET MVC

1 2

3
4

Những đặc tính mới trong MVC 3 so với MVC2
Demo

ASP.NET MVC 3

2

1.1 ASP.NET MVC là gì? ASP.NET MVC là 1 Framework phát triển ứng dụng web mới của Microsoft
 Cùng với những thành phần tốt nhất nền tảng ASP.NET hiện thời. Model

View

Controller

 Mô hình Model View Controller (MVC)

3

1.2 Sự ra đời của ASP.NET MVC:
 Mô hình MVC được hình thành bởi các nghiên cứu của Trygve Reenskaug vào khoảng các năm 19781979, trong dự án Smalltalk của Xerox PARC.
• 11/2007, hội thảo ALT.NET tại Austine, Texas, tổng giám đốc Scott Guthrie đã công bố và mô tả về

nền tảng phát triển web MVC mới xây dựng trên
ASP.NET.
ASP.NET MVC 3

4

NET MVC 3 5 .1.3 Mô hình MVC cơ bản ASP.

NET MVC • Models : Là những thành phần có nhiệm vụ lưu trữ thông tin. trạng thái của các đối tượng. ASP.4 Các thành phần của ASP.NET MVC 3 6 .1.

ASP. .1.NET MVC • Views: .NET MVC 3 7 .Các thông tin cần hiển thị được lấy từ thành phần Models.Chịu trách nhiệm hiển thị các thông tin lên cho người dùng thông qua giao diện.4 Các thành phần của ASP.

NET MVC • Controllers: .NET MVC 3 8 . ASP.1. và cuối cùng là chọn một view thích hợp để hiển thị ra màn hình. các thao tác đối với models.4 Các thành phần của ASP.Chịu trách nhiệm xử lý các tác động về mặt giao diện.

net MVC Tính năng Kiến trúc chương trình ASP. Views Cú pháp chương trình Sử dụng cú pháp của webform.NET 2. Models.1.5 So sánh Asp.NET MVC 3 9 .NET MVC Kiến trúc sử dụng việc phân chia chương trình thành Controllers. các controls quản lý 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 Phần lớn dùng LINQ to SQL cập dữ liệu trong ứng dụng class để tạo mô hình truy cập đối tượng Debug Debug chương trình phải thực hiện Debug có thể sử dụng các tất cả bao gồm các lớp truy cập dữ unit test kiểm tra các liệu.net Webform và Asp. tất cả Các sự kiện được điều khiển các sự kiện và controls do server bởi controllers.0 Kiến trúc mô hình WebForm →Business →Database ASP. sự hiển thị. điều khiển các phương thức trong controller controls ASP.

net Webform và Asp.aspx?&<các tham số> ASP.1.5 So sánh Asp.NET MVC 3 10 .net MVC Tốc độ phân tải Tốc độ phân tải chậm khi trong Phân tải nhanh hơn do trang có quá nhiều các controls không phải quản lý vì ViewState quá lớn 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ó Cấu trúc địa chỉ rành mạch theo dạng Controllers/Action/Id URL Address Cấu trúc địa chỉ URL có dạng <filename>.

NET MVC 3 11 .NET MVC 1 2 3 4 Những đặc tính mới trong MVC 3 so với MVC2 Demo ASP.Nội dung Tổng quan về MVC Cơ chế hoạt động của ASP.

1 Cơ chế hoạt động ASP.2.NET MVC 3 12 .

NET MVC 3 13 .2 URL Routing • ASP.asax • Một Route gồm các thông số sau: • controller: Tên contronller • action: Action methos tương ứng • id: Tham số truyền vào ASP.2. Global.NET Routing được thiết lập tại hai nơi: web.NET Routing có nhiệm vụ mapping một URL đến Controller cụ thể • ASP.config.

2 URL Routing • Cấu trúc một Route • Giá trị mặc định: • new { controller = "Home".NET MVC 3 14 .Optional } ASP.2. action = "Index". id = UrlParameter.

3 Controller và Action Methods • Controller đảm nhận vai trò xử lí trong mô hình MVC • Trong mỗi Controller có nhiều Action Methods • Mỗi Action Methods đều phải trả về một Action Result.NET MVC 3 15 . • Các Action Result trong MVC 3 ASP.2.

2.NET MVC 3 16 .3 Controller và Action Methods ASP.

4 View và ViewResult • View đảm nhận vai trò hiển thị trong mô hình MVC • ViewResult có nhiệm vụ render một trang .2.NET MVC 3 17 .aspx ASP.

NET MVC 3 18 .4 View và ViewResult • Một số controls thường dùng trong HTML Helpers: ASP.2.

NET MVC hỗ trợ: ASP.2.5 Model Validation • Model Validation được thiết kế để logic validation luôn luôn được thực thi trên máy chủ.NET MVC 3 19 . và có thể tùy chọn cũng được thi hành trên máy khách thông qua JavaScript • Một số validation attibute mà ASP.

NET MVC 3 20 .5 Model Validation • MVC 3 hỗ trợ thêm một số Model Validation mới: • Thuộc tính siêu dữ liệu “DataAnnotations” • ValidationAttribue • Validation Interfaces ASP.2.

NET MVC 3 21 .2.6 Filter • Filter là một đối tượng cho phép can thiệp vào dữ liệu từ request và response trước khi dữ liệu này đi đến điểm cuối là Web Container hay browser • Các loại Filter ASP.

NET MVC 1 2 3 4 Những đặc tính mới trong MVC 3 so với MVC2 Demo ASP.Nội dung Tổng quan về MVC Cơ chế hoạt động của ASP.NET MVC 3 22 .

NET MVC 3 23 .  Razor views có thể kiểm tra từng đơn vị mà không đòi hỏi bạn phải chạy các ứng dụng hoặc phải chạy web server.3. đòi hỏi một số lượng tối thiểu các tổ hợp phím.1 Razor View Engine  Cú pháp Razor là trong sáng và xúc tích.  Việc tìm hiểu Razor tương đối dễ dàng vì nó dựa trên ngôn ngữ C# và Visual Basic. ASP.

Crypto.NET MVC 3 24 . WebGrid. chẳng hạn như: Chart.  Razor cũng bao gồm những công cụ hỗ trợ HTML mới.1 Razor View Engine  Một số tính năng mới của Razor:  Cú pháp @model để xác định các loại sẽ được truyền vào view.Raw để hiển thị các văn bản mà không cần mã hóa Html cho nó. WebImage… ASP.vbhtml).cshtml hay _viewstart.  Hỗ trợ chia sẽ mã giữa nhiều views (_viewstart.  @**@ là cú pháp comment.3.  Phương thức Html.

3. ASP. hay NDjango.NET MVC 3 25 . NHaml.2 Support for Multiple View Engines  Hộp thoại View cho phép bạn chọn các view engine mà bạn muốn làm việc với nó và và hộp thoại New Project cho phép bạn xác định view engine mặc định cho một project. Razor. hay một view engine nguồn mở như Spark.  Bạn có thể chọn view engine Web Forms (ASPX).

cho phép áp dụng Action Filter cho tất cả các Action Method bằng cách thêm chúng vào Global Filters Collection.3. ASP.  Action Filter là thuộc tính dùng để định nghĩa thêm những hành động cần được thực hiện trước và sau một Action Method được chỉ định trong Controller.  MVC 3 hỗ trợ Global Filters.NET MVC 3 26 .3 Những cải tiến Controller  Global Action Filters:  Để thực hiện một logic trước khi một Action Method thực hiện hoặc sau khi một Action Method được thực hiện thì MVC 3 đã hỗ trợ Action Filters.

 Trong MVC 3. ASP.NET MVC 3 27 .  Thật sự thuộc tính ViewBag được lưu trữ như cặp name/value trong ViewData Collection.3 Những cải tiến Controller  Thuộc tính mới “ViewBag”  MVC 2 hỗ trợ một thuộc tính ViewData để cho phép bạn chuyển dữ liệu đến một view template bằng cách sử dụng một API.  Bạn không cần phải xác định kiểu mạnh khi sử dụng thuộc tính ViewBag.Message = “text”. bởi vì nó là một thuộc tính động. ViewData[“Message”] = “text” ↔ ViewBag. bạn có thể sử dụng cú pháp đơn giản hơn một chút với thuộc tính ViewBag để thực hiện cùng một mục đích trên.3.  Ví dụ.

NET MVC 3 28 .3. phụ thuộc vào một tham số Boolean.  RedirectResult: Trả về một chuyển hướng tạm thời (mã trạng thái HTTP 302) hoặc một chuyển hướng vĩnh viễn (mã trạng thái HTTP 301).  ASP.3 Những cải tiến Controller  Các kiểu “ActionResult” mới:  HttpNotFoundResult: Trả về trạng thái mã HTTP 404 cho client.  HttpStatusCodeResult: Trả về một mã trạng thái được xác định bởi người dùng.

3. ASP.NET MVC 3 29 .  Validation helpers trong MVC 3 sử dụng plugin jQueryValidate theo mặc định. Điều này làm mã HTML của bạn nhỏ hơn và ít lộn xộn hơn. và dễ dàng tùy chỉnh các thư viện JavaScript.4 Ajax và JavaScript  Ajax và validation helpers trong MVC 3 sử dụng hướng tiếp cận unobtrusive JavaScript.  Unobtrusive JavaScript giúp tránh đưa mã JavaScript vào HTML.

phải gọi phương thức Html.4 Ajax và JavaScript Client-Side Validation Enabled by Default: Các phiên bản MVC trước.  Để Client-Side Validation để làm việc.3.  ASP.EnableClientValidation từ một view để cho phép client-side valiation.NET MVC 3 30 . bạn vẫn cần phải sử dụng thư viện jQuery và jQuery Validation. Điều này trong MVC 3 là không cần thiết vì client-side valiation được thiết lập mặc định.

3.NET MVC 3 31 .4 Ajax và JavaScript  Remote Validator:  ASP.  Điều này cho phép thư viện client-side validation tự động gọi một phương thức trên máy chủ được định nghĩa để thực hiện validation logic.NET MVC 3 hỗ trợ lớp RemoteAttribute cho phép bạn tận dụng lợi ích của plugin jQuery Validation để hỗ trợ remote validator. ASP.

} } Ví dụ sau đây minh họa các điều khiển tương ứng: public class UsersController { public bool UserNameAvailable(string username) { if(MyRepository.3. } } ASP. "Users")] public string UserName { get.UserNameExists(username)) { return "false".4 Ajax và JavaScript  public class User { [Remote("UserNameAvailable".NET MVC 3 32 . set. } return "true".

3.  MVC 3 cho phép bạn dễ dàng kết nối client template với các Action Method thông qua việc gởi và nhận nhận dữ liệu JSON.NET MVC 3 33 . ASP.4 Ajax và JavaScript  JSON Binding Support:  MVC 3 hỗ trợ JSON Binding cho phép các phương thức hành động để nhận được dữ liệu JSON-encoded.

NET MVC 3 hỗ trợ các thuộc tính siêu dữ liệu DataAnnotations như DisplayAttribute. Lớp “ValidationAttribue”  Lớp ValidationAttribute đã được cải tiến trong .NET Framerwork 4 để hỗ trợ một phương thức cho phép override là IsValid.5 Model Validation Imporvements Thuộc tính siêu dữ liệu “DataAnnotations”  ASP. ASP.3.NET MVC 3 34 .  Điều này cho kiểm tra giá trị hiện tại dựa trên các thuộc tính khác của model.

NET MVC 3 35 . Trong ví dụ dưới đây. } } ASP.5 Model Validation Imporvements  Ví dụ. set. Compare("Password")] public string ComparePassword { get. } [Required. set.3. thuộc tính ComparePassword phải phù hợp với trường Password để được hợp lệ: public class User { [Required] public string Password { get. thuộc tính mới CompareAttribute cho phép bạn so sánh các giá trị của 2 thuộc tính của một model.

ASP. Windsor. RhinoMocks.3.  NuGet cho phép các nhà phát triển để duy trì các dự án mã nguồn mở (ví dụ: các dự án như Moq. NUnit.6 Các tính năng mới khác NuGet Integration:  MVC 3 cài đặt Nuget một cách tự động.NET MVC 3 36 . NHibernate. StructureMap. và Elmah) để đóng gói thư viện của mình và đăng ký chúng trong một bộ sưu tập trực tuyến. Ninject.

NET MVC được hỗ trợ đưa vào bộ nhớ đệm một trang page từ bản 1. cho phép bạn dễ dàng đưa vào bộ nhớ đệm các vùng hoặc các mảnh của một response.6 Các tính năng mới khác Partial-Page Output Caching:  ASP.3. ASP.  MVC 3 cũng hỗ trợ đưa vào bộ nhớ đệm partial-page.NET MVC 3 37 .

NET MVC gắn liền với request validation giúp tự động giúp bảo vệ đối với XSS và HTML injection gây hại.3. như nếu bạn muốn cho phép một người post nội dung HTML.NET MVC 3 38 . ASP.6 Các tính năng mới khác Kiểm soát và yêu cầu xác nhận:  ASP. Bạn có thể thêm một thuộc tính AllowHtml cho các model hay view models để vô hiệu hóa với request validation trên mỗi một thuộc tính cơ bản trong mô hình liên kết.  Đôi khi bạn muốn vô hiệu request validation.

ASP. bạn có thể thêm các project mẫu.NET MVC 3 39 . và unit test project frameworks cho hộp thoại New project. view engines.3.6 Các tính năng mới khác  Mở rộng hộp thoại “New Project” Trong ASP.NET MVC 3.

net MVC scaffolding template sẽ xác định thuộc tính khóa chính của model và xử lý chúng một cách thích hợp hơn trong các phiên bản trước của MVC.NET MVC 3 40 . ASP.TextBoxFor helper. Điều này hỗ trợ cho các siêu dữ liệu được định nghĩa bởi annotation attributes.6 Các tính năng mới khác Scaffolding Improvements:  ASP. Create and Edit scaffolds bây giờ sử dụng Html.  Theo mặc định.EditorFor helper thay vì Html.3.

6 Các tính năng mới khác Lớp mới “AdditionalMetadataAttribute”: Bạn có thể sử dụng thuộc tính AdditionalMetadata để đưa vào từ điển ModelMetadata.} } ASP. set. AdditionalValues cho một thuộc tính model. bạn có thể thực hiện giống như trong ví dụ dưới đây:  public class ProductViewModel { [AdditionalMetadata("AdminOnly". true)] public string RefundCode {get.  Ví dụ.3.NET MVC 3 41 . nếu view model có một thuộc tính sẽ được hiển thị chỉ cho một admin.

NET MVC 3 42 .Nội dung Tổng quan về MVC Cơ chế hoạt động của ASP.NET MVC 1 2 3 4 Những đặc tính mới trong MVC 3 so với MVC2 Demo ASP.

ASP.NET MVC 3 43 .