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