MVC viết tắt cho modelviewcontroller. MVC là một mô hình phát triển ứng dụng có kiến trúc tốt, có khả năng kiểm thử tốt và dễ dàng vận hành và bảo trì. Một ứng dụng theo kiến trúc MVC gồm: Models: là các lớp chức năng thể hiện cho việc xử lý dữ liệu và các vấn đề liên quan đến nghiệp vụ và các quy tắc ràng buộc dữ liệu. Đồng thời, nó còn có nhiệm vụ lưu trữ thông tin, trạng thái của các đối tượng vào CSDL. Views: là thành phần chịu trách nhiệm hiển thị các giao diện dưới dạng html theo cơ chế phát sinh động của ứng dụng. Các thông tin cần hiển thị sẽ được lấy từ Models thông qua các Controllers. Controllers: là các lớp thực hiện việc điều quản các yêu cầu từ trình duyệt, nhận dữ liệu từ Models và xác định việc hiển thị lên các Views.Chúng tôi sẽ giới thiệu tất cả các khái niệm này trong loạt bài hướng dẫn và chỉ cho bạn cách sử dụng chúng để xây dựng một ứng dụng.
Trang 11/3/14 Tạo mới một Controller
Tạo mới một Controller
MVC viết tắt cho model-view-controller MVC là một mô hình phát triển ứng dụng có kiến trúc tốt, có khả năng kiểm thử tốt và dễ dàng vận hành và bảo trì Một ứng dụng theo kiến trúc MVC gồm:
Models: là các lớp chức năng thể hiện cho việc xử lý dữ liệu và các vấn đề liên quan đến nghiệp vụ và các quy tắc ràng buộc dữ liệu Đồng thời, nó còn có nhiệm vụ lưu trữ thông tin, trạng thái của các đối tượng vào CSDL Views: là thành phần chịu trách nhiệm hiển thị các giao diện dưới dạng html theo cơ chế phát sinh động của ứng dụng Các thông tin cần hiển thị sẽ được lấy từ Models thông qua các Controllers
Controllers: là các lớp thực hiện việc điều quản các yêu cầu từ trình duyệt, nhận dữ liệu từ Models và xác định việc hiển thị lên các Views
Chúng tôi sẽ giới thiệu tất cả các khái niệm này trong loạt bài hướng dẫn và chỉ cho bạn cách sử dụng chúng để xây dựng một ứng dụng
Giờ chúng ta hãy bắt đầu tạo ra một lớp controller Trong cửa sổ Solution Explorer, right-click thư
mục Controllers và click Add, rồi chọn Controller
Trang 21/3/14 Tạo mới một Controller
Trong của sổ Add Scaffold, click MVC 5 Controller - Empty, rồi click Add
Trang 31/3/14 Tạo mới một Controller
Đặt tên cho controller mới tạo là "HelloWorldController" rồi click Add
Như vậy trong cửa sổ Solution Explorer sẽ có một file mới được tạo có tên là HelloWorldController.cs và một thư mục
mới có tên là Views\HelloWorld Mặc định controller mới tạo sẽ được mở sẵn trong IDE.
Trang 41/3/14 Tạo mới một Controller
Giờ ta thay nội dung đoạn code như bên dưới
Trang 51/3/14 Tạo mới một Controller
Các phương thức trong controller sẽ trả về một chuỗi theo dạng HTML Controller có tên HelloWorldController có một phương thức với tên là Index Chugn1 ta thử chạy thử xem bằng cách nhấn F5 Trong thanh địa chỉ ở trình duyệt ta
gõ thêm "HelloWorld" ví dụ là http://localhost:1234/HelloWorld Và ta thấy kết quả như hình dưới với kết quả cụ thể là một chuỗi HTML
Trang 61/3/14 Tạo mới một Controller
ASP.NET MVC sẽ gọi các controller khác nhau cùng với các phương thức tương ứng, điều này phục thuộc vào các URl trên thanh địa chỉ của trình duyệt Mặc định, ta có như sau:
/[Controller]/[ActionName]/[Parameters]
Chúng ta có thể thiết lập các định dạng điều hướng trong tập tin App_Start/RouteConfig.cs
Khi chúng ta chạy một ứng dụng và nếu chúng ta không chỉ định URL cụ thể thì nó sẽ lấy mặc định là "Home" controller
và phương thức "Index"
Trong đó, phần đầu của URL để xác định controller nào Như vậy, /HelloWorld sẽ ánh xạ đến
lớp HelloWorldController
Phần thứ hai của URL để xác định phương thức nào sẽ thực thi Như vậy /HelloWorld/Index sẽ gọi phương
thức Index của lớp HelloWorldController để thực thi
Trong trường hợp, chúng ta chỉ chỉ định /HelloWorld thì có nghĩa là phương thức có tên Index sẽ được xem là mặc định sẽ thực thi Bởi vì phương thức có tên Index được xem là mặc định khi thực thi của lớp Controller
Phần thức ba của URL để xác định các tham số (Parameters) cung cấp cho phương thức Chúng ta sẽ xem kỹ phần này
ở phần tiếp
Duyệt đến URL http://localhost:xxxx/HelloWorld/Welcome Phương thức Welcome chạy và trả về là một chuỗi "This is the Welcome action method " Mặc nhiên MVC đang ánh xạ tới /[Controller]/[ActionName]/[Parameters] Như vậy với URL này, controller là HelloWorld và phương thức được thực hiện là Welcome Và chúng ta không có sử dụng
phần [Parameters] ở trong URL này
Trang 71/3/14 Tạo mới một Controller
Giờ chúng ta hãy thử sửa một chút code để thử duyệt với URL /HelloWorld/Welcome?name=Scott&numtimes=4 bằng
cách thay đổi code ở phương thức Welcome với việc bổ sung 02 tham số như hình dưới
Chạy ứng dụng và duyệt URL http://localhost:xxxx/HelloWorld/Welcome?name=Scott&numtimes=4 Và thử thay đổi các
giá trị cho tham số namevànumtimes ở thanh địa chỉ ASP.NET MVC model binding system sẽ tự động ánh xạ các parameters có tên trong query string ở URL với các tham số trong phương thức
Trang 81/3/14 Tạo mới một Controller
Như vậy ở ví dụ trên thì thành phần tham số (Parameters) theo cấu trúc vẫn chưa dùng, tham số name và numTimes
được dùng ở đây chỉ là tham số theo query strings Dấu ? (question mark) trong URL là một phần ngăn cách để chỉ ra phía sau đó là query strings Dấu & để ngăn cách các cặp query strings với nhau
Giờ chúng ta tiếp tục cập nhật lại đoạn code với nội dung như sau:
Chạy ứng dụng và duyệt tới URL: http://localhost:xxx/HelloWorld/Welcome/3?name=Rick
Trang 91/3/14 Tạo mới một Controller
đúng với phần đăng ký của phương thức RegisterRoutes
Trong một ứng dụng ASP.NET MVC, đây là dạng điển hình trong việc truyền tham số (giống như tham số ID ở ví dụ trên), thay vì ta phải truyền tham số theo query strings Chúng ta cũng có thể thêm vào cấu trúc cho
name và numtimes ở phần parameters trong URL Tại file App_Start\RouteConfig.cs, thêm "Hello" route:
Chạy ứng dụng và duyệt tới URL/localhost:XXX/HelloWorld/Welcome/Scott/3
Trang 101/3/14 Tạo mới một Controller
Đối với các ứng dụng MVC, các định tuyến mặc định sẽ hoạt động tốt hầu hết các trường hợp Tuy nhiên, tùy vào các nhu cầu cụ thể, chúng ta có thể thay đổi các định tuyến để phù hợp với các nhu cầu
In trang