Sự khác biệt giữa RouteLink và ActionLink trong ASP.NET MVC là gì?


120

Tôi nghĩ rằng tiêu đề tóm tắt khá nhiều:

Sự khác biệt giữa những gì RouteLink()ActionLink()trong ASP.NET MVC?

tức là khi nào bạn sử dụng Html.RouteLink()và khi nào bạn sử dụng Html.ActionLink()trong Chế độ xem của mình?

Câu trả lời:


78

Hành động và Lộ trình không nhất thiết phải có mối quan hệ 1: 1.

ActionLink sẽ tạo URL để đến một hành động bằng cách sử dụng tuyến đường phù hợp đầu tiên theo tên hành động.

RouteLink sẽ tạo một URL đến một tuyến đường cụ thể được xác định bằng tên hoặc giá trị tuyến đường.


+1 cho một bài đăng blog tuyệt vời. Thực sự tiện dụng. Và cho thấy có quá nhiều khả năng. MS các bạn chỉ nên thực hiện nhanh nhất. Nhưng mọi người thích sử dụng lambda chậm nhất.
Robert Koritnik

hey, cảm ơn Nhưng tôi nghĩ rằng liên kết bị hỏng đã không đạt được. pls bạn sẽ một lần nữa cung cấp cho tôi liên kết nhờ
user1006544

5
chúng tôi có thể lấy ví dụ?
MaylorTaylor

67

Trên thực tế, kết quả từ hai phương pháp là giống nhau, nhưng nó được tạo theo những cách hơi khác nhau:

Html.ActionLink()giúp bạn dễ dàng tạo các Liên kết hành động nhanh chóng và sẽ cung cấp cho bạn quyền kiểm soát cơ bản đối với những gì được hiển thị. Nếu bạn không có quá nhiều lộ trình, hoặc không cần cung cấp quá nhiều hoặc quá cụ thể thông tin, điều này sẽ hoạt động tốt.

Các Html.RouteLink()phương pháp lấy đối số hơi khác nhau, và do đó cung cấp cho bạn một điều khiển ít chi tiết hơn so với cách điều được xử lý. Tôi có xu hướng sử dụng phương pháp này khi kịch bản của tôi phức tạp hơn một chút hoặc khi tôi có cấu trúc tuyến đường chi tiết hơn.
Một ví dụ là một dự án gần đây mà tôi (vì tính linh hoạt) thay vì có một số lộ trình khác nhau, tất cả đều khá đơn giản, hơn là một lộ trình phức tạp sẽ cho phép cung cấp nhiều thông tin. Vì vậy, tôi đã kết thúc với bốn hoặc năm tuyến đường cho cùng một Bộ điều khiển, tất cả đều được chỉ định một hành động mặc định. Tôi chủ yếu sử dụng RouteLinkphiên bản, vì khi tôi chỉ định tên tuyến đường, các tham số mặc định được nhập tự động.

Sử dụng chúng khi bạn cảm thấy thích và khi chúng có ý nghĩa đối với dự án của bạn. Thực sự không có mặt trái / mặt nào đối với cả hai (điều đó không phù hợp với một số ... khác).


19

Ngoài các câu trả lời khác được đưa ra ở đây, RouteLink nhanh hơn một chút và không thể khớp sai tuyến đường do bạn đã thay đổi bảng định tuyến của mình.


1
Simone Chiaretta đã thực hiện một số phân tích hiệu suất tại đây: codeclimber.net.nz/archive/2009/04/17/…
Dmitry

12

RouteLink lấy tên của một tuyến đường, vì vậy nếu tên tuyến đường của bạn đáng tin cậy và khá độc đáo thì tên này sẽ giống nhau ngay cả khi tên hành động được sử dụng thay đổi. ActionLink liên kết đến một hành động cụ thể của một bộ điều khiển cụ thể. Tôi sử dụng cả hai trong quan điểm của mình, tùy thuộc vào loại liên kết mà tôi đang theo đuổi!

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.