2009-05-14 23 views

Trả lời

72

Hành động và tuyến đường không phải có mối quan hệ 1: 1.

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

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

+0

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

+0

hey thanks Nhưng tôi nghĩ rằng liên kết bị hỏng không đạt được. xin bạn lại cung cấp cho tôi liên kết cảm ơn – user1006544

+4

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

12

RouteLink lấy tên của 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ì điều 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ể thay thế. Tôi sử dụng cả trong quan điểm của tôi, tùy thuộc vào loại liên kết tôi đang theo dõi!

63

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

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

Phương pháp Html.RouteLink() có các đối số hơi khác nhau và do đó cung cấp cho bạn một chút kiểm soát chi tiết hơn về cách xử lý mọi thứ. 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 nơi tôi (cho tính linh hoạt) thay vì có một số tuyến đường khác nhau, tất cả đều khá đơn giản, so với một phương án phức tạp cho phép nhiều thông tin. Do đó, tôi đã kết thúc với bốn hoặc năm tuyến cho cùng một Bộ điều khiển, tất cả đều có hành động mặc định được chỉ định. Tôi chủ yếu sử dụng phiên bản RouteLink, vì khi tôi chỉ định tên tuyến đường, các thông số mặc định được nhập tự động.

Sử dụng chúng như bạn cảm thấy, và khi chúng phù hợp với dự án của bạn. Có thực sự không có lộn ngược/nhược điểm cho một trong số họ (đó là không phù hợp bở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 bao giờ khớp được với tuyến đường sai vì 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: http://codeclimber.net.nz/archive/2009/04/17/the-performances-implications-of-the-expression-tree-based-actionlink-helper.aspx – Dmitry