Ở bài trước bạn đã học cách tạo ứng dụng ASP.NET MVC, và ở bài học này bạn sẽ học cách tạo Controller và tìm hiểu về Controller trong mô hình MVC.
MVC là viết tắt của model-view-controller. MVC là mẫu thiết kế để phát triển các ứng dụng có kiến trúc tốt và dễ bảo trì. Ứng dụng MVC bao gồm:
· Controller: Là các lớp có trách nhiệm tiếp nhận và xử lý các request gởi đến cho ứng dụng, lấy dữ liệu lên (model) và chọn view để kết hợp với model để tạo ra kết quả trả về cho trình khách.
· Models: Là các lớp đại diện cho dữ liệu của ứng dụng, chúng còn có chức năng kiểm tra tính hợp lệ dữ liệu.
· Views: các tập tin template (mẫu) để ứng dụng sử dụng và tạo ra các kết quả HTML trả về cho trình khách.
Chúng ta sẽ tìm hiểu các thành phần nói trên trong loạt bài hướng dẫn này để có thể tự mình xây dựng được ứng dụng MVC.
Bây giờ hãy bắt đầu để tạo Controller cho ứng dụng. Ở cửa sổ Solution Explorer, nhấp chuột phải lên thư mục Controllers và sau đó chọn Add Controller.
Hãy đặt tên cho controller là HelloWorldController, hãy chọn default template (mẫu mặc định) là Emty Controller.
Sau đó lớp HelloWordController sẽ được lưu bên trong tập tin HelloWordController.cs ở thư mục Controllers.
Bên trong của lớp HelloWorldController, bạn hãy tạo hai phương thức Index và Welcome như mã dưới đây. Các phương thức sẽ trả về các đoạn mã HTML để hiển thị ở các trình duyệt.
using System.Web.Mvc; namespace ToDoApp.Controllers { public class HelloWorldController : Controller { // // GET: /HelloWorld/ public string Index() { return "Đây là Action <b>Mặc định</b>!"; } public string Welcome() { return "Đây là action Wellcome!"; } } }
Các bạn sẽ thấy, một Controller phải kế thừa từ lớp Controller trong namespace System.Web.Mvc. Bạn cần lưu ý rằng, bất kỳ một phương thức công (định nghĩa bởi từ khóa public) nào đều được xem như là một action. Nghĩa là nếu bạn duyệt /[Tên Controller]/[Tên Action] như /HelloWord/Index thì kết quả sẽ được trả về cho trình duyệt.
ASP.NET MVC có cách định tuyến mặc định là:
/[Controller]/[Action]/[Parameters]
Tuy nhiên nếu bạn muốn có cách định tuyến khác theo ý của bạn, bạn cũng có thể tự định nghĩa cho ứng dụng của bạn, nhưng nó không nằm trong phạm vi của bài viết này.
Giả sử bạn muốn điều chỉnh action Wellcome của HelloWorldController để tiếp nhận các tham số được gởi lên từ trình duyệt như sau:
public string Welcome(string name, string city) { return "Xin chào " + name + " đến từ " + city + "!"; }
Với việc phương thức Welcom nhận hai tham số name và city như vậy, chúng ta có thể truy vấn từ trình duyệt và truyền hai tham số có tên là name và city (http://localhost:39797/HelloWorld/Welcome?name=Tumi&city=Vietnam), lúc đó hệ thống sẽ tự động chuyển các tham số được truyển bởi URL hoặc từ Form trong mã HTML thành các biến để truyền vào lời gọi của action.
Đến lúc này ta chỉ mới trả về những chuỗi HTML nhưng chúng ta cũng đã thao tác đến phần View và phần Controller trong mô hình MVC. Tuy nhiên view ở đây là cả chuỗi được trả về trực tiếp cho trình duyệt. Tất nhiên bạn không chỉ muốn trả về các chuỗi như thế này, thay vì đó thì chúng ta sẽ sử dụng các view template để tạo ra mã HTML để trả về cho trình duyệt.