Cấp bậc tác giả:

TRAINING

Phần 2: Thêm mới Controller(Điều khiển) trong ASP.NET MVC

Được viết bởi webmaster ngày 29/10/2018 lúc 04:48 PM
Trong phần này, chúng ta sẽ học cách tạo 1 lớp controller mới và sử dụng controller này để hiển thị dữ liệu trên trình duyệt.
  • 0
  • 4836

Phần 2: Thêm mới Controller(Điều khiển) trong ASP.NET MVC

Phần trước chúng ta đã tìm hiểu tổng quan về ASP.NET. Trong phần này, chúng ta sẽ học cách tạo 1 lớp controller mới và sử dụng controller này để hiển thị dữ liệu trên trình duyệt.
Để thêm 1 controller mới, ở cửa sổ Solution Explorer của dự án TutorialMVC, chuột phải lên thư mục Controllers và sau đó nhấn Add, chọn Controller.
lap-trinh-web-asp.net-mvc-6_8.png 
Ở 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, chúng ta sẽ làm quen các dạng Controller khác.

lap-trinh-web-asp.net-mvc-6_9.png

Sau đó, đặt tên Controller là TutorialController, lưu ý 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.
 
lap-trinh-web-asp.net-mvc-6_10.png

Ở bước này, thư mục Controller, lớp TutorialController.cs được tạo ra với nội dung mặc định như trong hình sau.
 
lap-trinh-web-asp.net-mvc-6_11.png

Tiếp đến, thêm 1 số đoạn mã vào tập tin TutorialController.cs như sau:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;

namespace TutorialMVC.Controllers
{
    public class TutorialController : Controller
    {
        // GET: Tutorial
         public string Index()
        {
            return "Đây là phương thức Index, phương thức mặc định của Controller Tutorial.";
        }
        // 
        // GET: /Tutorial/ChaoMung/ 
        public string ChaoMung()
        {
            return "Đây là phương thức ChaoMung nằm trong Controller Tutorial!";
        }
    }
}
Giải thích đoạn mã trên:
Phương thức Index() trả về kiểu string với giá trị là “Đây là phương thức Index, phương thức mặc định của Controller Tutorial.” Đây là phương thức mặc định của 1 Controller bất kỳ.
Phương thức ChaoMung() cũng trả về kiểu string với giá trị “Đây là phương thức ChaoMung nằm trong Controller Tutorial!”

Chúng ta có thể tạo nhiều phương thức thực thi ở tập tin TutorialController.cs tùy ý. Tiếp theo, thực thi ứng dụng TutorialMVC bằng cách nhấn F5 hoặc Ctrl + F5 (chế độ không cần Debug) để xem kết quả.
Ở trình duyệt, thử chạy 2 địa chỉ http://localhost:xxx/Tutorial/ và http://localhost:xxxx/Tutorial/ChaoMung để xem kết quả (với xxxx là số cổng tự động gieo bởi server IIS Express của Visual Studio, chúng ta không cần quan tâm số cổng này).

lap-trinh-web-asp.net-mvc-6_12.png

lap-trinh-web-asp.net-mvc-6_13.png
 
ASP.NET MVC sẽ gọi các lớp controller khác nhau (kèm theo các phương thức) tùy theo URL đầu vào. Mặc định URL có định dạng:
…/[Controller]/[ActionName]/[Parameters]
Phần … là địa chỉ website của bạn, ví dụ http://www.dotnet.edu.vn/ hay http://localhost:xxxx/. Controller là tên phần đầu của Controller, ví dụ TutorialController.cs thì có tên là Tutorial. ActionName là tên phương thức, ví dụ phương thức ChaoMung. Parameters là các tham số đầu vào của các phương thức. Vì trong ví dụ trên, chúng ta chưa tạo Parameters cho phương thức vì vậy phần này trống.

Nếu muốn thay đổi cấu trúc đường dẫn, có thể vào tập tin App_Start/RouteConfig.cs và chỉnh cấu trúc đường dẫn. Ví dụ chỉnh cấu trúc đường dẫn thành {action}/{controller}/{id}.
public static void RegisterRoutes(RouteCollection routes)
        {
            routes.IgnoreRoute("{resource}.axd/{*pathInfo}");

            /*Cấu trúc mặc định
            routes.MapRoute(
                name: "Default",
                url: "{controller}/{action}/{id}",
                defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
            );
            */

            // Cấu trúc đường dẫn thay đổi
            routes.MapRoute(
               name: "Default",
               url: "{action}/{controller}/{id}",
               defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional });
        }
Để thuận tiện, hãy để cấu trúc đường dẫn trong tập tin RouteConfig.cs. Chúng ta sẽ có 1 bài viết về cách chỉnh cấu trúc này sau.
Quay trở lại đường dẫn http://localhost:xxxx/Tutorial/ChaoMung, với cấu trúc đường dẫn mặc định ({controller}/{action}/{id}), chúng ta phải nắm rõ Tutorial chính là tên Controller (TutorialController.cs), ChaoMung là 1 phương thức trong lớp Controller Tutorial. Vì chưa có tham số cho phương thức ChaoMung cho nên {id} ở đây là trống. Lưu ý, đây là cách thức hoạt động đường dẫn cơ bản nhất trong MVC, bắt buộc phải nắm vững.
Để sử dụng các tham số (parameters) trên đường dẫn URL, hãy sửa nội dung phương thức ChaoMung như sau:
public string ChaoMung(string ten, int tuoi = 1)
        {
            return HttpUtility.HtmlEncode("Xin chào " + ten + ". Tuổi của bạn là: " + tuoi);
        }
Sau đó, nhấn F5 hoặc Ctrl + F5 để chạy dự án, ở trình duyệt chạy URL như sau: http://localhost:54855/Tutorial/ChaoMung?ten=DOTNETGROUP&tuoi=10. Trong URL có 2 tham số đầu vào là ten với giá trị Tutorial và tuoi với giá trị 10. Lưu ý, tham số ten và tuoi phải giống như tham số ở phương thức ChaoMung(string ten, int tuoi = 1). Nếu không mô tả cho giá trị ten, mặc định biến này có giá trị là 1.

lap-trinh-web-asp.net-mvc-6_14.png

lap-trinh-web-asp.net-mvc-6_15.png
 
Tiếp theo, chúng ta thử chạy đường dẫn http://localhost:54855/Dammio/ChaoMung/?ten=DOTNETGROUP&tuoi=20 thì cũng cho ra kết quả tương tự.
Bây giờ chúng ta thử chỉnh sửa đôi chút tập tin App_Start\RouteConfig.cs để thay đổi cấu trúc đường dẫn theo đúng chuẩn SEO. Hãy chỉnh nội dung tập tin RouteConfig.cs như sau:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using System.Web.Routing;

namespace TutorialMVC
{
    public class RouteConfig
    {
        public static void RegisterRoutes(RouteCollection routes)
        {
            routes.IgnoreRoute("{resource}.axd/{*pathInfo}");

          
            routes.MapRoute(
                name: "Default",
                url: "{controller}/{action}/{id}",
                defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
            );

            routes.MapRoute(
                name: "Tutorial",
                url: "{controller}/{action}/{ten}/{tuoi}"
            );


        }
    }
}
Chúng ta Build dự án (Ctrl + Shift + B) và chạy lại với F5 hoặc Ctrl + F5 (chế độ không cần Debug) và chạy đường dẫn http://localhost:54855/Tutorial/ChaoMung/DOTNETGROUP/20. Bạn cũng thấy kết quả tương tự, nhưng lúc này không cần ghi rõ tên biến (ten, tuoi) trong URL mà chỉ ghi theo thứ tự {controller}/{action}/{ten}/{tuoi}.
 
lap-trinh-web-asp.net-mvc-6_16.png

Chuyện gì xảy ra chạy đường dẫn http://localhost:54855/Tutorial /ChaoMung/DOTNETGROUP/abcdef. Nếu bạn để ý, giá trị “abdef” là giá trị cho tuoi, kiểu int. Trong trường hợp này do lỗi nên giá trị trả về mặc định, tức là 1.
 
lap-trinh-web-asp.net-mvc-6_17.png

Đối với nhiều ứng dụng MVC, cấu trúc đường dẫn mặc định đủ để thực thi cho toàn ứng dụng. Bạn sẽ học cách đẩy dữ liệu dùng model binder mà không cần thay đổi đường dẫn mặc định.

Trong phần này, chúng ta đã học cách tạo 1 controller với các phương thức đơn giản và cả cách hiển thị dữ liệu từ các phương thức trên trình duyệt. Tuy nhiên, cách hiển thị này chưa đủ và đáp ứng nhu cầu, các bài tiếp theo sẽ giới thiệu về View (cách hiển thị) và Model (mô hình lấy dữ liệu từ nguồn dữ liệu như database) để có thể hiển thị giao diện Web và dữ liệu từ database đầy đủ hơn.

Phần tiếp theo chúng ta sẽ làm quen với View(cái nhìn đầu tiên trong MVC)

Nguồn bài viết: DOTNET.VN

BÌNH LUẬN BÀI VIẾT

Bài viết mới nhất

LIKE BOX

Bài viết được xem nhiều nhất

HỌC HTML