อะไรคือความแตกต่างระหว่าง RouteLink และ ActionLink ใน ASP.NET MVC?


120

ฉันคิดว่าชื่อนี้สรุปได้ค่อนข้างดี:

อะไรคือความแตกต่างระหว่างRouteLink()และActionLink()ใน ASP.NET MVC?

เช่นคุณใช้Html.RouteLink()เมื่อใดและคุณใช้เมื่อใดHtml.ActionLink()ใน View ของคุณ?

คำตอบ:


78

การดำเนินการและเส้นทางไม่จำเป็นต้องมีความสัมพันธ์แบบ 1: 1

ActionLink จะสร้าง URL เพื่อเข้าสู่การดำเนินการโดยใช้เส้นทางแรกที่ตรงกันตามชื่อการดำเนินการ

RouteLink จะสร้าง URL ไปยังเส้นทางเฉพาะที่กำหนดโดยค่าของชื่อหรือเส้นทาง


+1 สำหรับบล็อกโพสต์ที่ยอดเยี่ยม มีประโยชน์จริงๆ และแสดงให้เห็นว่ามีความเป็นไปได้มากเกินไป พวก MS ควรใช้งานได้เร็วที่สุดเท่านั้น แต่ผู้คนมักใช้แลมด้าแฟนซีที่ช้าที่สุด
Robert Koritnik

เดี๋ยวก่อนขอบคุณ แต่ฉันคิดว่าลิงค์เสียไปไม่ถึง กรุณาให้ลิงค์อีกครั้งขอบคุณ
user1006544

5
ขอตัวอย่างได้ไหม
MaylorTaylor

67

อันที่จริงผลลัพธ์จากทั้งสองวิธีนั้นเหมือนกัน แต่สร้างขึ้นด้วยวิธีที่แตกต่างกันเล็กน้อย:

Html.ActionLink()ทำให้ง่ายต่อการสร้าง ActionLinks อย่างรวดเร็วและจะให้การควบคุมขั้นพื้นฐานสำหรับสิ่งที่แสดงผล หากคุณไม่มีเส้นทางมากเกินไปหรือไม่จำเป็นต้องให้ข้อมูลมากเกินไปหรือเฉพาะเจาะจงเกินไปสิ่งนี้ก็จะทำงานได้ดี

Html.RouteLink()วิธีใช้อาร์กิวเมนต์แตกต่างกันเล็กน้อยจึงช่วยให้คุณมีการควบคุมน้อยกว่ารายละเอียดเพิ่มเติมทางสิ่งที่ได้รับการจัดการ ฉันมักจะใช้วิธีนี้เมื่อสถานการณ์ของฉันซับซ้อนขึ้นเล็กน้อยหรือเมื่อฉันมีโครงสร้างเส้นทางที่ละเอียดกว่านี้
ตัวอย่างหนึ่งคือโครงการล่าสุดที่ฉัน (เพื่อความยืดหยุ่น) ค่อนข้างมีเส้นทางที่แตกต่างกันหลายเส้นทางซึ่งทั้งหมดค่อนข้างเรียบง่ายมากกว่าหนึ่งเส้นทางที่ซับซ้อนซึ่งจะอนุญาตให้มีข้อมูลจำนวนมาก ดังนั้นฉันจึงลงเอยด้วยสี่หรือห้าเส้นทางสำหรับคอนโทรลเลอร์เดียวกันทั้งหมดนี้มีการดำเนินการเริ่มต้นที่ระบุไว้ ฉันใช้RouteLinkเวอร์ชันนี้เป็นส่วนใหญ่เนื่องจากเมื่อฉันระบุชื่อเส้นทางพารามิเตอร์เริ่มต้นจะถูกป้อนโดยอัตโนมัติ

ใช้ตามที่คุณต้องการและตามที่เหมาะสมกับโครงการของคุณ ไม่มีการกลับหัว / ลงอย่างใดอย่างหนึ่งสำหรับทั้งสองอย่าง (ซึ่งไม่ตรงกับข้ออื่น ๆ ... )


19

นอกเหนือจากคำตอบอื่น ๆ ที่ให้ไว้ที่นี่แล้ว RouteLink ยังเร็วกว่าเล็กน้อยและไม่สามารถจับคู่เส้นทางที่ผิดได้เนื่องจากคุณเปลี่ยนตารางเส้นทาง


1
Simone Chiaretta ได้ทำการวิเคราะห์ประสิทธิภาพที่นี่: codeclimber.net.nz/archive/2009/04/17/…
Dmitry

12

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

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.