MVC Framework - เครื่องมือกำหนดเส้นทาง

ASP.NET MVC Routing ช่วยให้สามารถใช้ URL ที่อธิบายการกระทำของผู้ใช้และผู้ใช้เข้าใจได้ง่ายขึ้น ในขณะเดียวกันการกำหนดเส้นทางสามารถใช้เพื่อซ่อนข้อมูลที่ไม่ได้ตั้งใจให้แสดงต่อผู้ใช้ขั้นสุดท้าย

ตัวอย่างเช่นในแอปพลิเคชันที่ไม่ใช้การกำหนดเส้นทางผู้ใช้จะแสดง URL เป็น http: //myapplication/Users.aspx? id = 1 ซึ่งจะสอดคล้องกับไฟล์ Users.aspx ภายใน myapplication path และส่ง ID เป็น 1 โดยทั่วไปเราไม่ต้องการแสดงชื่อไฟล์ดังกล่าวแก่ผู้ใช้ขั้นสุดท้ายของเรา

ในการจัดการ URL MVC แพลตฟอร์ม ASP.NET ใช้ระบบเส้นทางซึ่งช่วยให้คุณสร้างรูปแบบของ URL ที่คุณต้องการและแสดงได้อย่างชัดเจนและรัดกุม แต่ละเส้นทางใน MVC มีรูปแบบ URL เฉพาะ รูปแบบ URL นี้ถูกเปรียบเทียบกับ URL คำขอขาเข้าและหาก URL ตรงกับรูปแบบนี้จะใช้โดยเอ็นจิ้นการกำหนดเส้นทางเพื่อประมวลผลคำขอต่อไป

รูปแบบ URL เส้นทาง MVC

หากต้องการทำความเข้าใจการกำหนดเส้นทาง MVC ให้พิจารณา URL ต่อไปนี้ -

http://servername/Products/Phones

ใน URL ด้านบนผลิตภัณฑ์เป็นกลุ่มแรกและโทรศัพท์เป็นกลุ่มที่สองซึ่งสามารถแสดงในรูปแบบต่อไปนี้ -

{controller}/{action}

เฟรมเวิร์ก MVC จะพิจารณาเซ็กเมนต์แรกโดยอัตโนมัติเป็นชื่อคอนโทรลเลอร์และเซ็กเมนต์ที่สองเป็นการดำเนินการอย่างใดอย่างหนึ่งภายในคอนโทรลเลอร์นั้น

Note- หากชื่อ Controller ของคุณคือ ProductsController คุณจะกล่าวถึงผลิตภัณฑ์ใน URL การกำหนดเส้นทางเท่านั้น เฟรมเวิร์ก MVC เข้าใจคำต่อท้ายคอนโทรลเลอร์โดยอัตโนมัติ

สร้างเส้นทางง่ายๆ

เส้นทางถูกกำหนดไว้ในไฟล์ RouteConfig.cs ซึ่งอยู่ภายใต้โฟลเดอร์โปรเจ็กต์ App_Start

คุณจะเห็นรหัสต่อไปนี้ภายในไฟล์นี้ -

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

เมธอด RegisterRoutes นี้เรียกโดย Global.ascx เมื่อแอปพลิเคชันเริ่มทำงาน เมธอด Application_Start ภายใต้ Global.ascx เรียกฟังก์ชันนี้ว่า MapRoute ซึ่งตั้งค่าตัวควบคุมเริ่มต้นและการดำเนินการ (วิธีการภายในคลาส Controller)

หากต้องการแก้ไขการแมปเริ่มต้นข้างต้นตามตัวอย่างของเราให้เปลี่ยนบรรทัดของโค้ดต่อไปนี้ -

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

การตั้งค่านี้จะเลือก ProductsController และเรียกวิธีการโทรศัพท์ภายในนั้น ในทำนองเดียวกันหากคุณมีวิธีอื่นเช่น Electronics ภายใน ProductsController URL ของมันจะเป็น -

http://servername/Products/Electronics