MVC Framework - Công cụ định tuyến

ASP.NET MVC Routing cho phép sử dụng các URL mô tả hành động của người dùng và người dùng dễ hiểu hơn. Đồng thời, Định tuyến có thể được sử dụng để ẩn dữ liệu không nhằm mục đích hiển thị cho người dùng cuối cùng.

Ví dụ: trong một ứng dụng không sử dụng định tuyến, người dùng sẽ được hiển thị URL là http: //myapplication/Users.aspx? Id = 1, URL này sẽ tương ứng với tệp Users.aspx bên trong đường dẫn ứng dụng của tôi và gửi ID dưới dạng 1 Nói chung, chúng tôi không muốn hiển thị các tên tệp như vậy cho người dùng cuối cùng của chúng tôi.

Để xử lý các URL MVC, nền tảng ASP.NET sử dụng hệ thống định tuyến, cho phép bạn tạo bất kỳ mẫu URL nào bạn muốn và diễn đạt chúng một cách rõ ràng và ngắn gọn. Mỗi tuyến đường trong MVC chứa một mẫu URL cụ thể. Mẫu URL này được so sánh với URL yêu cầu đến và nếu URL khớp với mẫu này, nó sẽ được công cụ định tuyến sử dụng để xử lý thêm yêu cầu.

Định dạng URL định tuyến MVC

Để hiểu định tuyến MVC, hãy xem xét URL sau:

http://servername/Products/Phones

Trong URL ở trên, Sản phẩm là phân đoạn đầu tiên và Điện thoại là phân đoạn thứ hai có thể được thể hiện theo định dạng sau:

{controller}/{action}

Khung MVC tự động coi phân đoạn đầu tiên là tên Bộ điều khiển và phân đoạn thứ hai là một trong các hành động bên trong Bộ điều khiển đó.

Note- Nếu tên của Bộ điều khiển của bạn là ProductsController, bạn sẽ chỉ đề cập đến Sản phẩm trong URL định tuyến. Khung MVC tự động hiểu hậu tố Bộ điều khiển.

Tạo một tuyến đường đơn giản

Các tuyến được xác định trong tệp RouteConfig.cs có trong thư mục dự án App_Start.

Bạn sẽ thấy đoạn mã sau bên trong tệp này:

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 } 
      ); 
   } 
}

Phương thức RegisterRoutes này được Global.ascx gọi khi ứng dụng được khởi động. Phương thức Application_Start trong Global.ascx gọi hàm MapRoute này để đặt Bộ điều khiển mặc định và hành động của nó (phương thức bên trong lớp Bộ điều khiển).

Để sửa đổi ánh xạ mặc định ở trên theo ví dụ của chúng tôi, hãy thay đổi dòng mã sau:

defaults: new { controller = "Products", action = "Phones", id = UrlParameter.Optional }

Cài đặt này sẽ chọn ProductsController và gọi phương thức Phone bên trong đó. Tương tự, nếu bạn có một phương thức khác, chẳng hạn như Điện tử bên trong ProductsController, thì URL cho nó sẽ là:

http://servername/Products/Electronics