Cấu trúc thư mục mặc định của ứng dụng ASP.NET MVC gồm 3 thư mục chính:
- Controllers
- Models
- Views
Như bạn thấy, chúng tôi khuyến khích việc đưa những class điều khiển vào bên trong thư mục /Controllers, những class thuộc về mô hình dữ liệu vào bên trong thư mục /Models, và những gì liên quan đến giao diện vào thư mục Views.
Mặc dù ASP.NET MVC framework không bắt buộc bạn phải luôn sử dụng cấu trúc này, nhưng đây là cấu trúc mặc định khi bạn tạo một project mới và chúng tôi luôn luôn khuyến khích việc sử dụng nó để phân chia ứng dụng. Bạn hãy sử dụng cấu trúc này ngoại trừ trường hợp bạn đề ra một lý do đủ thuyết phục để thay đổi nó.
Mặc dù ASP.NET MVC framework không bắt buộc bạn phải luôn sử dụng cấu trúc này, nhưng đây là cấu trúc mặc định khi bạn tạo một project mới và chúng tôi luôn luôn khuyến khích việc sử dụng nó để phân chia ứng dụng. Bạn hãy sử dụng cấu trúc này ngoại trừ trường hợp bạn đề ra một lý do đủ thuyết phục để thay đổi nó.
Ánh xạ các URL vào trong class Controller
Hầu hết các web framework, như ASP, PHP, JSP, ASP.NET WebForms..., đều ánh xạ các URL vào một file template được lưu trên đĩa. Lấy ví dụ URL "/Products.aspx" hay "/Products.php" được chuyển đến file template Products.aspx hay Products.php trên đĩa cứng để xử lý. Khi một ứng dụng web nhận được HTTP Request đến web server, thì web framework sẽ chạy đoạn một code cụ thể tương ứng với nội dung của file template, và đoạn code này đóng vai trò xử lý yêu cầu do phía client gửi đến. Thông thường thì đoạn code này sẽ sinh ra HTML và đáp ứng lại phía client.
MVC Framework lại hoạt động theo một cách khác hoàn toàn, thay vì ánh xạ các URL vào các file template lưu trên đĩa, nó sẽ đưa thẳng vào các class. Những class được ánh xạ tới được gọi là "Controllers", và chúng sẽ xử lý request đến, kiểm soát dòng nhập xuất và giao diện đối với người dùng, thực thi các ứng dụng và data logic tương ứng với request. Cuối cùng, chúng sử dụng các thành phần Views để tạo HTML và đáp trả lại request.
ASP.NET MVC Framework có một bộ máy ánh xạ URL thật sự mạnh mẽ. Bộ máy này cung cấp phương pháp rất linh hoạt trong việc ánh xạ URLs sang cho Controller Classes. Bạn có thể dễ dàng định ra các quy luật, cài đặt đường đi để ASP.NET dựa vào các quy luật đường đi đó, xác định xem phải thực thi Controller nào. ASP.NET còn có khả năng phân tích URL, chuyển các thông số trong URL thành các tham số trong lời gọi hàm của Controller. Tôi sẽ viết kỹ hơn về kỹ thuật định tuyến nâng cao trong những bài blog sắp đến.
ASP.NET MVC Framework có một bộ máy ánh xạ URL thật sự mạnh mẽ. Bộ máy này cung cấp phương pháp rất linh hoạt trong việc ánh xạ URLs sang cho Controller Classes. Bạn có thể dễ dàng định ra các quy luật, cài đặt đường đi để ASP.NET dựa vào các quy luật đường đi đó, xác định xem phải thực thi Controller nào. ASP.NET còn có khả năng phân tích URL, chuyển các thông số trong URL thành các tham số trong lời gọi hàm của Controller. Tôi sẽ viết kỹ hơn về kỹ thuật định tuyến nâng cao trong những bài blog sắp đến.
Đường đi mặc định từ ASP.NET MVC URL đến Controller Classes
Các projects ASP.NET MVC được định nghĩa sẵn một số quy luật về đường đi để bạn không phải hiệu chỉnh thêm điều gì trong khi bắt đầu làm quen với framework mới. Bạn có thể bắt đầu viết mã và sử dụng phương pháp ánh xạ URL mặc định được định nghỉa trong file Global.asax - ASP.NET Application class. File Global.asax này được tự động tạo ra từ ASP.NET MVC project template.
Phương pháp mặc định đơn giản làm nhiệm vụ ánh xạ một phần URL từ HTTP Request, lấy ví dụ /Products/, đến một class có tên theo mẫu UrlPathController, tức là URL /Products/ sẽ được chuyển đến class có tên là ProductsController.
Để xây dựng chức năng tìm duyệt sản phẩm trong ứng dụng thương mại điện tử, chúng ta thêm vào class "ProductsController" vào project. Bạn có thể sử dụng menu "Add New Item" để nhanh chóng tạo Controller class từ template:
Class ProductsController được kế thừa từ class cơ sở System.Web.MVC.Controller. Thừa kế từ class cơ sở này không phải là điều bắt buộc, tuy nhiên sẽ khá tiện lợi bởi nó có nhiều phương thức và chức năng mà ta muốn sử dụng về sau này.
Một khi chúng ta đã định nghĩa class ProductsController, ASP.NET MVC framework sẽ sử dụng nó cho tất cả các URL bắt đầu bằng "/Products/". ProductsController cũng sẽ được sử dụng bất kỳ khi nào có yêu cầu đến "/Products/Categories", "/Products/List/Beverages" và "/Products/Detail/3", là ba chức năng mà ta sẽ phải cài đặt trong ứng dụng cửa hàng này.
Trong bài blog tiếp theo tôi sẽ thêm ShoppingCartController để người dùng có thể quản lí giỏ hàng của họ. Thêm vào đó là AccountController cho phép người dùng tạo tài khoản khách hàng, đăng nhập và đăng xuất khỏi website. Tất nhiên khi đã có hai controller này rồi, thì mặc định các URL bắt đầu bằng /ShoppingCart/ và /Account/ sẽ được tự động chuyển hướng sang controller để xứ lý.
Lưu ý : ASP.NET MVC framework không yêu cầu bạn bắt buộc phải sử dụng cách đặt tên để ánh xạ URL theo mẫu như trên. Lý do duy nhất mà ứng dụng tôi đang thực hiện làm như vậy là do nó sử dụng các luật ánh xạ mặc định được tạo bởi ASP.NET MVC Project template. Nếu bạn muốn thay đổi, bạn có thể chỉnh sửa lại các luật trong class ASP.NET Application - file Global.asax. Tôi sẽ hướng dẫn làm sao cấu hình lại đường đi mới trong một bài blog khác, khi đó bạn sẽ ngạc nhiên vì sự dễ dàng và linh hoạt.
DangTrung

Không có nhận xét nào:
Đăng nhận xét