Maproute mvc là gì? Tìm hiểu về routing trong ASP.NET MVC

Routing trong ASP.NET MVC được xem là một phần quan trọng và luôn cần được ưu tiên khi muốn làm quen với một framework nào đó. Vậy thì routing trong ASP.NET MVC là gì? Cùng Comdy tìm hiểu chi tiết từ A – Z trong bài viết này nhé.

Giới thiệu về maproute trong ASP.NET MVC

Maproute trong ASP.NET MVC
Maproute là một phương thức trong ASP.NET MVC được sử dụng để định nghĩa các route trong ứng dụng

Routecollection Maproute mvc là một phương thức trong ASP.NET MVC được sử dụng để định nghĩa các route trong ứng dụng. Phương thức này là một phần của đối tượng RouteCollection, và nó giúp xác định cách mà các URL được ánh xạ (mapped) đến các controllers và actions trong ứng dụng.

Ví dụ về maproute c#:

public class RouteConfig
{
    public static void RegisterRoutes(RouteCollection routes)
    {
        routes.IgnoreRoute(“{resource}.axd/{*pathInfo}”);
        routes.MapRoute(
            name: “Default”,                                   // Tên của route
            url: “{controller}/{action}/{id}”,                // Định dạng URL mẫu
            defaults: new { controller = “Home”, action = “Index”, id = UrlParameter.Optional }  // Giá trị mặc định cho controller, action, và id
        );
    }
}

Giới thiệu về routing ASP.NET MVC

Routing ASP.NET MVC
Routing (tuyến) xác định mẫu URL và thông tin xử lý

Routing (tuyến) xác định mẫu URL và thông tin xử lý. Tất cả các tuyến được cấu hình của một ứng dụng được lưu trữ trong RouteTable và sẽ được sử dụng bởi công cụ định tuyến (asp mvc routing engine) để xác định controller MVC thích hợp cho yêu cầu đến.

Cấu hình routing trong ASP.NET MVC

Mỗi ứng dụng ASP.NET MVC phải cấu hình ít nhất một tuyến đã được cấu hình mặc định. Bạn có thể đăng ký tuyến trong lớp RouteConfig, nằm trong tập tin RouteConfig.cs trong thư mục App_Start.

Route net được cấu hình bằng phương thức mở rộng MapRoute() của RouteCollection, trong đó tên .net route in MVC là “Default”, mẫu URL của tuyến là {controller}/{action}/{id} và giá trị mặc định cho tham số  controller, phương thức hành động và tham số id.

Giá trị tham số mặc định chỉ định controller, phương thức hành động hoặc giá trị của tham số id sẽ được sử dụng nếu chúng không tồn tại trong URL yêu cầu gửi đến.

Tương tự, bạn có thể cấu hình các tuyến khác bằng phương thức MapRoute của RouteCollection. RouteCollection thực chất là một thuộc tính của lớp RouteTable.

Mẫu URL trong ASP.NET MVC

Mẫu URL chỉ là phần sau của tên miền trong URL. Ví dụ: mẫu URL {controller}/{action}/{id} sẽ có URL thật trông giống như sau: “localhost:1234/{controller}/{action}/{id}”.

Phần đằng sau “localhost:1234/” sẽ được coi là mẫu URL. Phần đầu tiền ngay sau tên miền nếu có sẽ là controller. Phần tiếp theo ngay sau controller nếu có sẽ là phương thức hành động của controller. Phần tiếp theo ngay sau phương thức hành động nếu có sẽ là tham số id.

Nếu URL không chứa bất cứ thứ gì sau tên miền thì controller và phương thức hành động mặc định sẽ xử lý yêu cầu.

Ví dụ: http://localhost:1234/ sẽ được xử lý bởi phương thức HomeController và phương thức hành động Index như được cấu hình trong tham số mặc định.

Bảng sau đây cho biết controller, phương thức hành động và tham số id nào sẽ xử lý các URL khác nhau khi đánh giá tuyến mặc định ở trên.

URL Controller Action Id
http://localhost/home HomeController Index null
http://localhost/home/index/123 HomeController Index 123
http://localhost/home/about HomeController About null
http://localhost/home/contact HomeController Contact null
http://localhost/student StudentController Index null
http://localhost/student/edit/123 StudentController Edit 123

Nhiều ASP.NET MVC routing in C#

Nhiều ASP.NET MVC routing in C#
Cần cung cấp ít nhất hai tham số trong MapRoute là tên tuyến và mẫu URL

Bạn cũng có thể thêm cấu hình route tùy chỉnh bằng phương thức mở rộng MapRoute. Bạn cần cung cấp ít nhất hai tham số trong MapRoute là tên tuyến và mẫu URL. Tham số mặc định là tùy chọn.

Bạn có thể đăng ký nhiều tuyến tùy chỉnh với các tên khác nhau. Hãy xem ví dụ sau nơi chúng tôi đăng ký tuyến “Student”.

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

        routes.MapRoute(
            name: "Student",
            url: "student/{id}",
            defaults: new { controller = "Student", action = "Index"}
        );

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

Như được trình bày trong đoạn mã trên, mẫu URL cho tuyến Student là students/{id}, chỉ định rằng bất kỳ URL nào bắt đầu bằng /student, phải được StudentController xử lý.

Chúng tôi đã chỉ định controller và phương thức hành động mặc định để xử lý bất kỳ URL yêu cầu nào bắt đầu bằng /student.

ASP.NET MVC đánh giá từng tuyến theo trình tự cấu hình. Nó bắt đầu với tuyến được cấu hình đầu tiên và nếu URL của yêu cầu đến không thỏa mãn mẫu URL của tuyến thì nó sẽ chuyển sang tuyến thứ hai, v.v.

Trong ví dụ trên, công cụ định tuyến sẽ đánh giá tuyến Student trước và nếu URL đến không bắt đầu bằng /student thì nó sẽ chuyển sang tuyến thứ hai là tuyến mặc định.

Bảng sau đây cho biết các URL khác nhau sẽ được ánh xạ tới tuyến Student như thế nào:

URL Controller Action Id
http://localhost/student/123 StudentController Index 123
http://localhost/student/index/123 StudentController Index 123
http://localhost/student?Id=123 StudentController Index 123

Ràng buộc .net routing trong ASP.NET MVC

Bạn cũng có thể áp dụng các ràng buộc đối với giá trị của tham số bằng cách cấu hình các ràng buộc tuyến. Ví dụ: tuyến sau áp dụng một hạn chế đối với tham số id đó là giá trị của id phải là số.

routes.MapRoute(
    name: "Student",
    url: "student/{id}/{name}/{standardId}",
    defaults: new 
    { 
        controller = "Student", 
        action = "Index", 
        id = UrlParameter.Optional, 
        name = UrlParameter.Optional, 
        standardId = UrlParameter.Optional 
    },
    constraints: new { id = @"d+" }
);

Vì vậy, nếu bạn đưa ra giá trị không phải là số cho tham số id thì yêu cầu đó sẽ được xử lý bởi một tuyến khác hoặc, nếu không có tuyến nào phù hợp thì lỗi “The resource could not be found” sẽ bị ném ra.

Đăng ký routing in MVC C#

Đăng ký routing in MVC C#
Sau khi cấu hình tất cả các tuyến trong lớp asp.net mvc route config cần đăng ký nó vào sự kiện Application_Start()

Bây giờ, sau khi cấu hình tất cả các tuyến trong lớp asp.net mvc route config, bạn cần đăng ký nó vào sự kiện Application_Start() trong Global.asax. Do đó, nó sẽ thêm tất cả các tuyến của bạn vào RouteTable.

public class MvcApplication : System.Web.HttpApplication
{
    protected void Application_Start()
    {
        RouteConfig.RegisterRoutes(RouteTable.Routes);
    }
}

Do đó, định tuyến (asp.net routing mvc) đóng vai trò rất quan trọng trong ASP.NET MVC.

Những lưu ý đối với routing trong ASP.NET MVC

  • Định tuyến đóng vai trò quan trọng trong ASP.NET MVC. Định tuyến ánh xạ URL của yêu cầu tới phương thức hành động của controller để xử lý và phản hồi.
  • Tuyến chứa mẫu URL và thông tin xử lý. Mẫu URL là phần bắt đầu ngay sau tên miền.
  • Có thể cấu hình tuyến trong lớp RouteConfig. Có thể thêm nhiều tuyến tùy chỉnh vào cấu hình tuyến.
  • Có thể áp dụng các ràng buộc cho các tham số của tuyến để chúng chỉ nhận các giá trị phù hợp.
  • Tuyến phải được đăng ký trong sự kiện Application_Start trong tập tin Global.ascx.cs.

Router MVC là gì?

Router MVC là gì
Router trong ASP.NET MVC có nhiệm vụ xác định cách mà một URL cụ thể được ánh xạ đến một controller và action tương ứng

MVC router thường được sử dụng để mô tả cơ chế quản lý và định tuyến (routing) các yêu cầu HTTP đến các controllers và actions tương ứng trong ứng dụng.

Router trong ASP.NET MVC có nhiệm vụ xác định cách mà một URL cụ thể được ánh xạ (mapped) đến một controller và action tương ứng. Điều này giúp xác định quy luật chung cho việc xử lý các yêu cầu HTTP từ trình duyệt hoặc bất kỳ nguồn nào khác.

Kết lại

Trên đây là toàn bộ chia sẻ của Comdy về Routing trong ASP.NET MVC. Hi vọng những thông tin, kiến thức trong bài viết này là bổ ích và có ý nghĩa với mọi người. Xin cám ơn vì đã theo dõi và ủng hộ.

 

Trả lời

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *