Apa perbedaan antara RouteLink dan ActionLink di ASP.NET MVC?

120

Saya pikir judulnya cukup merangkumnya:

Apa perbedaan antara RouteLink()dan ActionLink()di ASP.NET MVC?

yaitu kapan Anda menggunakan Html.RouteLink()dan kapan Anda menggunakan Html.ActionLink()dalam View Anda?

Orang
sumber

Jawaban:

78

Tindakan dan Rute tidak harus memiliki hubungan 1: 1.

ActionLink akan menghasilkan URL untuk mendapatkan tindakan menggunakan rute pertama yang cocok dengan nama tindakan.

RouteLink akan menghasilkan URL ke rute tertentu yang ditentukan baik oleh nama atau nilai rute.

Chad Moran
sumber
+1 untuk postingan blog yang bagus. Sangat berguna. Dan menunjukkan ada terlalu banyak kemungkinan. Orang-orang MS seharusnya hanya menerapkan yang tercepat. Tetapi orang lebih suka menggunakan lambda mewah yang paling lambat.
Robert Koritnik
hey terima kasih Tapi saya pikir tautannya rusak tidak tercapai.
tolong beri
5
bolehkah kita mendapatkan contoh?
MaylorTaylor
67

Sebenarnya, keluaran dari kedua metode tersebut sama, tetapi dihasilkan dengan cara yang sedikit berbeda:

Html.ActionLink()memudahkan pembuatan ActionLinks dengan cepat, dan akan memberi Anda kontrol dasar atas apa yang dirender. Jika Anda tidak memiliki terlalu banyak rute, atau tidak perlu memberikan informasi yang terlalu banyak atau terlalu spesifik, ini akan bekerja dengan baik.

The Html.RouteLink()Metode mengambil argumen yang sedikit berbeda, dan dengan demikian memberikan Anda kontrol sedikit lebih rinci atas cara hal-hal yang ditangani. Saya cenderung menggunakan metode ini ketika skenario saya sedikit lebih rumit, atau ketika saya memiliki struktur rute yang lebih detail.
Salah satu contohnya adalah proyek baru-baru ini di mana saya (untuk fleksibilitas) lebih suka memiliki beberapa rute berbeda, yang semuanya cukup sederhana, daripada satu proyek rumit yang memungkinkan banyak informasi. Jadi, saya berakhir dengan empat atau lima rute untuk Kontroler yang sama, semuanya dengan tindakan default yang ditentukan. Saya kebanyakan menggunakan RouteLinkversi, karena ketika saya menentukan nama rute, parameter default dimasukkan secara otomatis.

Gunakan sesuai keinginan Anda, dan sesuai dengan proyek Anda. Benar-benar tidak ada sisi atas / bawah untuk salah satu dari mereka (yang tidak cocok dengan yang lain ...).

Tomas Aschan
sumber
19

Selain jawaban lain yang diberikan di sini, RouteLink sedikit lebih cepat, dan tidak dapat mencocokkan rute yang salah karena Anda mengubah tabel perutean.

Craig Stuntz
sumber
1
Simone Chiaretta melakukan beberapa analisis kinerja di sini: codeclimber.net.nz/archive/2009/04/17/…
Dmitry
12

RouteLink mengambil nama sebuah rute, jadi jika nama rute Anda dapat diandalkan dan cukup unik maka ini akan tetap sama meskipun nama tindakan yang akan digunakan berubah. ActionLink menautkan ke tindakan tertentu dari pengontrol tertentu. Saya menggunakan keduanya dalam pandangan saya, tergantung pada jenis tautan yang saya cari!

Simon Steele
sumber