ฉันคิดว่าชื่อนี้สรุปได้ค่อนข้างดี:
อะไรคือความแตกต่างระหว่างRouteLink()
และActionLink()
ใน ASP.NET MVC?
เช่นคุณใช้Html.RouteLink()
เมื่อใดและคุณใช้เมื่อใดHtml.ActionLink()
ใน View ของคุณ?
ฉันคิดว่าชื่อนี้สรุปได้ค่อนข้างดี:
อะไรคือความแตกต่างระหว่างRouteLink()
และActionLink()
ใน ASP.NET MVC?
เช่นคุณใช้Html.RouteLink()
เมื่อใดและคุณใช้เมื่อใดHtml.ActionLink()
ใน View ของคุณ?
คำตอบ:
การดำเนินการและเส้นทางไม่จำเป็นต้องมีความสัมพันธ์แบบ 1: 1
ActionLink จะสร้าง URL เพื่อเข้าสู่การดำเนินการโดยใช้เส้นทางแรกที่ตรงกันตามชื่อการดำเนินการ
RouteLink จะสร้าง URL ไปยังเส้นทางเฉพาะที่กำหนดโดยค่าของชื่อหรือเส้นทาง
อันที่จริงผลลัพธ์จากทั้งสองวิธีนั้นเหมือนกัน แต่สร้างขึ้นด้วยวิธีที่แตกต่างกันเล็กน้อย:
Html.ActionLink()
ทำให้ง่ายต่อการสร้าง ActionLinks อย่างรวดเร็วและจะให้การควบคุมขั้นพื้นฐานสำหรับสิ่งที่แสดงผล หากคุณไม่มีเส้นทางมากเกินไปหรือไม่จำเป็นต้องให้ข้อมูลมากเกินไปหรือเฉพาะเจาะจงเกินไปสิ่งนี้ก็จะทำงานได้ดี
Html.RouteLink()
วิธีใช้อาร์กิวเมนต์แตกต่างกันเล็กน้อยจึงช่วยให้คุณมีการควบคุมน้อยกว่ารายละเอียดเพิ่มเติมทางสิ่งที่ได้รับการจัดการ ฉันมักจะใช้วิธีนี้เมื่อสถานการณ์ของฉันซับซ้อนขึ้นเล็กน้อยหรือเมื่อฉันมีโครงสร้างเส้นทางที่ละเอียดกว่านี้
ตัวอย่างหนึ่งคือโครงการล่าสุดที่ฉัน (เพื่อความยืดหยุ่น) ค่อนข้างมีเส้นทางที่แตกต่างกันหลายเส้นทางซึ่งทั้งหมดค่อนข้างเรียบง่ายมากกว่าหนึ่งเส้นทางที่ซับซ้อนซึ่งจะอนุญาตให้มีข้อมูลจำนวนมาก ดังนั้นฉันจึงลงเอยด้วยสี่หรือห้าเส้นทางสำหรับคอนโทรลเลอร์เดียวกันทั้งหมดนี้มีการดำเนินการเริ่มต้นที่ระบุไว้ ฉันใช้RouteLink
เวอร์ชันนี้เป็นส่วนใหญ่เนื่องจากเมื่อฉันระบุชื่อเส้นทางพารามิเตอร์เริ่มต้นจะถูกป้อนโดยอัตโนมัติ
ใช้ตามที่คุณต้องการและตามที่เหมาะสมกับโครงการของคุณ ไม่มีการกลับหัว / ลงอย่างใดอย่างหนึ่งสำหรับทั้งสองอย่าง (ซึ่งไม่ตรงกับข้ออื่น ๆ ... )
นอกเหนือจากคำตอบอื่น ๆ ที่ให้ไว้ที่นี่แล้ว RouteLink ยังเร็วกว่าเล็กน้อยและไม่สามารถจับคู่เส้นทางที่ผิดได้เนื่องจากคุณเปลี่ยนตารางเส้นทาง
RouteLink ใช้ชื่อของเส้นทางดังนั้นหากชื่อเส้นทางของคุณมีความน่าเชื่อถือและไม่ซ้ำกันก็จะเหมือนกันแม้ว่าชื่อการดำเนินการที่จะใช้จะเปลี่ยนไปก็ตาม ActionLink เชื่อมโยงไปยังการดำเนินการเฉพาะของคอนโทรลเลอร์เฉพาะแทน ฉันใช้ทั้งสองอย่างในมุมมองของฉันขึ้นอยู่กับว่าฉันตามลิงค์แบบไหน!