Câu trả lời:
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.
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 RouteLink
phiê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).
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.
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!