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.
1/3/14 Tạo mới một Controller asp.net.vn/Modules/ASPNETVN.PORTAL.Modules.CMS/Pages/Print.aspx?itemid=985 1/10 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. 1/3/14 Tạo mới một Controller asp.net.vn/Modules/ASPNETVN.PORTAL.Modules.CMS/Pages/Print.aspx?itemid=985 2/10 Trong của sổ Add Scaffold, click MVC 5 Controller - Empty, rồi click Add. 1/3/14 Tạo mới một Controller asp.net.vn/Modules/ASPNETVN.PORTAL.Modules.CMS/Pages/Print.aspx?itemid=985 3/10 Đặ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. 1/3/14 Tạo mới một Controller asp.net.vn/Modules/ASPNETVN.PORTAL.Modules.CMS/Pages/Print.aspx?itemid=985 4/10 Giờ ta thay nội dung đoạn code như bên dưới. Replace the contents of the file with the following code. 1/3/14 Tạo mới một Controller asp.net.vn/Modules/ASPNETVN.PORTAL.Modules.CMS/Pages/Print.aspx?itemid=985 5/10 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. 1/3/14 Tạo mới một Controller asp.net.vn/Modules/ASPNETVN.PORTAL.Modules.CMS/Pages/Print.aspx?itemid=985 6/10 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. 1/3/14 Tạo mới một Controller asp.net.vn/Modules/ASPNETVN.PORTAL.Modules.CMS/Pages/Print.aspx?itemid=985 7/10 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ố name và 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. 1/3/14 Tạo mới một Controller asp.net.vn/Modules/ASPNETVN.PORTAL.Modules.CMS/Pages/Print.aspx?itemid=985 8/10 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 Lúc này thành phần thứ 3 trong URL ánh xạ đúng với parameter ID. Phương thúc Welcome có chứa tham số (ID) đã 1/3/14 Tạo mới một Controller asp.net.vn/Modules/ASPNETVN.PORTAL.Modules.CMS/Pages/Print.aspx?itemid=985 9/10 đú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. 1/3/14 Tạo mới một Controller asp.net.vn/Modules/ASPNETVN.PORTAL.Modules.CMS/Pages/Print.aspx?itemid=985 10/10 Đố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