ASP.NET - MVC - Controller

Controller

Trong phần này, bạn sẽ tìm hiểu về Controller trong ASP.NET MVC.
Controller trong Framework MVC xử lý mọi yêu cầu URL đến. Controller là một lớp trong namespace System.Web.Mvc.Controller. Lớp Controller chứa các phương thức public  gọi là các phương thức Action. Controller  và phương thức action  của nó xử lý các yêu cầu trình duyệt đến, lấy dữ liệu mô hình cần thiết và trả về cho trình duyệt.
Trong ASP.NET MVC, mọi tên lớp của trình điều khiển phải kết thúc bằng một từ "Controller". Ví dụ: bộ điều khiển cho trang chủ phải là HomeController và bộ điều khiển cho sinh viên phải là StudentController. Ngoài ra, mỗi lớp Controller được đặt trong thư mục Controller của cấu trúc thư mục MVC.

Trách nhiệm của Controller

Controller có 3 trách nhiệm chính:

  • Nhận request
  • Dựng model
  • Gửi trả response

Nhận request

Controller có trách nhiệm nhận request từ user.

Dựng model

Controller Action method thực thi logic của ứng dụng và xây dựng nên model.

Gửi trả kết quả

Cuối cùng nó sẽ trả về kết quả trong HTML, File, JSON, XML hoặc bất cứ định dạng nào về cho user.

Thêm mới Controller

Để thêm 1 controller mới, ở cửa sổ Solution Explorer của dự án MVC-BasicTutorials, chuột phải lên thư mục Controllers và sau đó nhấn Add, chọn Controller.

Add New Controller in ASP.NET MVC

Ở hộp thoại Add Scaffold, chọn MVC 5 Controller – Empty và nhấn Add. Ở bước này, do chúng ta mới làm quen với Controller cho nên chúng ta sử dụng mẫu Controller dạng Empty, tức là nội dung trống. Từ đó, chúng ta sẽ viết 1 số đoạn code làm quen. Ở những bài tiếp theo, bạn sẽ làm quen các dạng Controller khác.

Scaffolding là một Framewrok tạo code tự động cho các ứng dụng web ASP.NET. Scaffolding giúp giảm thời gian phát triển Controller, View, v.v. trong Framework MVC. Bạn có thể phát triển một Scaffolding tùy ý bằng cách sử dụng các mẫu T4 theo tiêu chuẩn kiến trúc và code của bạn.
 

Thêm Scaffold chứa các mẫu khác nhau để tạo bộ điều khiển mới. Chúng ta sẽ tìm hiểu về các mẫu khác sau. Hiện tại, chọn "MVC 5 Controller - Empty" và nhấp vào Thêm. Nó sẽ mở hộp thoại Thêm điều khiển như hình sau:

Sau đó, đặt tên Controller là StudentController, lưu ý bạn nên để tiền tố “Controller” cuối cùng khi đặt tên để dễ phân biệt lớp code nào là Controller.

Ở bước này, thư mục Controller, lớp StudentController.cs được tạo ra với nội dung mặc định như trong hình sau.

Ví dụ: Controller

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;

namespace MVC_BasicTutorials.Controllers
{
    public class StudentController : Controller
    {
        // GET: Student
        public ActionResult Index()
        {
            return View();
        }
    }
}

Như bạn có thể thấy ở trên, lớp StudentContoder kế thừa từ lớp Controller. Mỗi controller trong MVC phải kế thừa từ lớp Controller trừu tượng này. Lớp Controller cơ sở này chứa các phương thức có thể được sử dụng cho các mục đích khác nhau.

Tiếp đến, bạn thêm 1 số đoạn mã vào tập tin StudentController.cs như sau:

Ví dụ: Controller

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;

namespace MVC_BasicTutorials.Controllers
{
    public class StudentController : Controller
    {
        // GET: Student
        public string Index()
        {
                return "This is Index action method of StudentController";
        }
    }
}

Giải thích đoạn mã trên:

  • Phương thức Index() trả về kiểu string với giá trị là “This is Index action method of StudentController.” Đây là phương thức mặc định của 1 Controller bất kỳ.

Bạn có thể tạo nhiều phương thức thực thi ở tập tin StudentController.cs tùy ý. Tiếp theo, bạn thực thi ứng dụng bằng cách nhấn F5 hoặc Ctrl + F5 (chế độ không cần Debug) để xem kết quả.

 Một số điểm cần nhớ:

  1. Controller xử lý các yêu cầu của URL gửi đến. Controller MVC gửi yêu cầu đến controller và phương thức hành động dựa trên URL và các Controller được định cấu hình.
  2. Tất cả các phương thức public trong lớp Controller được gọi là các phương thức Action.
  3. Một Controller phải được kế thừa từ System.Web.Mvc.Controller Một tên lớp Controller có hậu tố là "Controller".
  4. Một Controller mới có thể được tạo bằng các mẫu scaffolding khác nhau. Bạn có thể tạo mẫu scaffolding tùy ý.