Controller trong Asp.Net MVC 5 - Visual Studio 2015 - Phần 1 - Bài số 2

Controller trong Asp.Net MVC 5 - Visual Studio 2015 - Phần 1 - Bài số 2
access_time 11/25/2015 12:00:00 AM
person Nguyễn Mạnh Hùng
1. Giới thiệu Contrller
Controller là một trong các thành phần chính của chương trình được viết trên nền tảng công nghệ Asp.Net MVC. Controller trong kiến trúc MVC xử lý bất kỳ các yêu cầu nào từ URL. Hình vẽ dưới đây mô tả vai trò của Controller trong kiến trúc MVC.
Hình số 1 :  Controller trong kiến trúc MVC
Controller là một class, nó thừa kế từ lớp cơ sở System.Web.Mvc.Controller, Lớp Controller chứachứa một hay nhiều phương thức có phạm vi truy cập là public, các phương này này được gọi là các Action. Controller và các phương thức Action tiếp nhận các yêu cầu từ phía trình duyệt, truy vấn các thông tin cần thiết từ Model sau đó trả lại kết quả cho trình duyệt. Dữ liệu hiển thị sẽ được trình duyệt hiển thị, thông tin hiển thị sẽ được trình bày bởi View trong kiến trúc MVC.
Trong Asp.Net MVC tất cả các class controller đều có hậu tố là từ “Controller”, ví dụ controller cho trang chủ có tên là “HomeController”, controller cho sản phẩm (Product) có tên là ProductController, ngoài ra tất cả các controller bắt buộc phải nằm trong thư mục Controller trong ứng dụng Asp.Net MVC.
2. Thêm mới Controller.
Bước 1 : Tạo ứng dụng asp.net mvc, sau đó chọn template ứng dụng Asp.Net MVC là Empty.
Bước 2 : Trong thư mục Project của ứng dụng, Click phải vào thư mục Controller, -> Chọn Add-> Click vào Controller.
Bước 3 : Khi của số Add Scaffold hiện ra chọn các  mẫu Template phù hợp, ở đây chúng ta chọn MVC 5 Controller – Empty.
Hình số 2 :  Lựa chọn Template Controller
Bước 4 : Cập nhật tên Controller trong cửa sổ hiển thị sau .
Hình số 3 :  Nhập tên Controller
Bước 5 : Kết thúc quá trình tạo, khi đó lớp HomeController sẽ tạo thành công trong thưc mục Controller của ứng dụng, hình ảnh mô tả lớp HomeController.
Hình số 4 :  HomeController được tạo thành công
Trong hình trên, lớp HomeController được thừa kế từ lớp Controller,  tất cả các lớp Controller trong Asp.net MVC đều được thừa kế từ lớp trừu tượng Controller, đây chính là lớp cơ sở của Controller.
Để không phải tạo View, chúng ta chỉnh sửa phương thức Index, thay vì trả về ActionResult thì thì phương thức này trả về string.
Hình số 5 :  Chỉnh sửa Action Index trong HomeController
Thực hiện chạy chương trình. Kết quả sẽ hiển thị như sau:
Hình số 6 :  Kết quả chạy chương trình 
3. Phương thức Action
3.1 Tổng quát về phương thức Action
Tất cả các phương thức public trong class Control đều gọi là phương thức Action. Các phương thức Action giống như các phương thức khác trong class tuy nhiên nó có các rằng buộc sau : Ví dụ minh họa phương thức Index trong HomeController.
 
Hình số 7 :  Phương thức Action Index 
Trong hình số 7, Phương thức Action Index() có : Cú pháp thông dụng của phương thức trong lớp Controller :
Cú pháp: public ActionResult <ActionMethod_Name>()
{

/*Code to execute logic and return the result as
ActionResult*/
}
Mô tả: 3.2. Phương thức mặc định
Tất cả các controller đều có phương thức action mặc định đó là phương thức Index. Khi tạo ứng dụng bộ điều hướng sẽ mặc định được tạo cùng với HomeController và phương thức Action Index().
Hình số 8 :  Route mặc định được tạo của ứng dụng
 3.3. ActionResult
Trong ứng dụng Asp.Net MVC, các phương thức Action thường trả lại kết quả, kết quả này được gọi là kết quả của action. ActionResult là một lớp cơ sở cho tất cả các lớp lưu trữ kiểu dữ liệu trả về của các phương thức action thực thi. Ví dụ như ViewResult là lớp được thừa kế từ lớp ActionResult, khi phương thức Action trả về dữ liệu có kiểu ViewResult, có nghĩa dữ liệu trả về của phương thức Action này sẽ được Render ra HTML tại tầng View.
Bảng dưới dây mô tả các kết quả trả về của phương thức Action có thể thực thi.

3.4. Gọi phương thức Action
Trong Asp.Net MVC, một controller có thể có nhiều phương thức Action. Chúng ta có thể gọi phương thức Action thông qua địa chỉ URL trên trình duyệt thông qua tên controller và tên phương thức.
Cú pháp : Mô tả : Ví dụ : Khi gọi phương thức ProductList trong HomeController của ứng dụng với tên domain mvclab2.com thì chúng ta sẽ nhập địa chỉ URL sau vào trình duyệt web.
http:// mvclab2.com/Home/ ProductList
Hình số 9 : Mô tả thứ tự thực hiện phương thức
Khi URL này được yêu cầu, MVC Framework sẽ thực thi theo thứ tự như sau :
  1. Tìm kiếm lớp HomeController .
  2. Tìm kiếm phương thức ProductList trong lớp Home controller.
  3. Thực thi phương thức ProductList
  4. Trả về kết quả cho trình duyệt.
4. Ví dụ minh họa
Viết ứng dụng Asp.Net MVC, hiển thị danh sách sản phẩm, thông tin bản phẩm bao gồm: Trong quá trình tạo ví dụ minh họa, tôi sử dụng một phần của Parttern Repository để thực hiện. Cụ thể thế nào là thiết kế mẫu phát triển Repository thì tôi sẽ đề cập chi tiết ở một bài viết riêng biệt về thiết kế mẫu phát triển này.
Chúng ta thực hiện ví dụ qua các bước sau :
Bước 1 : Tạo ứng dụng Asp.Net, sau đó chọn Template ứng dụng là Empty Project.
Bước 2 : Tạo lớp Product trong thư mục Model, lớp Product chứa cac thông tin thuộc tính của lớp sản phẩm, thông tin này bao gồm : Mã sản phẩm, tên sản phẩm, giá sản phẩm và mô tả sản phẩm.
Hình số 10 : Mô tả lớp Product
Bước 3 : Tạo thư mục Abstract trong ứng dụng, sau đó bổ sung Interface (IproductRepository) có chứa phương thức GetAllProduct(), phương thức này trả về danh sách thông tin sản phẩm.
Hình số 11 : Nội dung Interface IProductRepository
Bước 4 : Tạo lớp ProductRepository, mục tiêu của lớp này nhằm thực thi Interface IproductRepository. Để tạo lớp này, đầu tiên chúng ta tạo thư mục Concrete trong ứng dụng, sau đó tạo lớp ProductRepository với nội dung như sau :
Hình số 12 : Nội dung lớp ProductRepository
Bước 5: Tạo controller Product, bao gồm các Data member và phương thức Action như sau : Nội dung cụ thể của Controller Product như sau :
Hình số 13 : lớp ProductController
Bước 6 : Tạo View tương ứng với phương thức AllProductList bằng cách sau :
Hình số 14 : Bổ sung thêm một số thuộc tính của View
Khi đó View sẽ được tạo trong thư mục View, chú ý tên View là AllProductList mặc định sẽ trùng với tên của phương thức.
Nội dung View như sau :
Hình số 15 : Nội dung của View
Bước 7 : Bổ sung Route trong lớp RouteConfig trong thư mục App_Start của ứng dụng
Hình số 16 : Nội dung Route trong lớp RouteConfig
Bước 8 : Kết quả chạy chương trình như sau :
Hình số 17 : Kết quả chạy chương trình

vertical_align_top
share
Chat...