Saya baru saja menemukan pertanyaan ini dan, meskipun sudah cukup lama, masih sangat relevan. Ironisnya, satu komentar yang benar di utas ini diposting oleh seorang pemula yang mengaku di MVC ketika ia menulis posting tersebut. Bahkan dokumen ASP.NET tidak sepenuhnya benar. Saya memiliki proyek besar dan saya berhasil membebani metode tindakan.
Jika seseorang memahami perutean, di luar pola rute default {controller} / {action} / {id} sederhana, mungkin jelas bahwa tindakan controller dapat dipetakan menggunakan pola unik apa pun. Seseorang di sini berbicara tentang polimorfisme dan berkata: "HTTP tidak memahami polimorfisme", tetapi perutean tidak ada hubungannya dengan HTTP. Ini, sederhananya, mekanisme untuk pencocokan pola string.
Cara terbaik untuk membuat pekerjaan ini adalah dengan menggunakan atribut perutean, misalnya:
[RoutePrefix("cars/{country:length(3)}")]
public class CarHireController
{
[Route("{location}/{page:int=1}", Name = "CarHireLocation")]
public ActionResult Index(string country, string location, int page)
{
return Index(country, location, null, page);
}
[Route("{location}/{subLocation}/{page:int=1}", Name = "CarHireSubLocation")]
public ActionResult Index(string country, string location, string subLocation, int page)
{
//The main work goes here
}
}
Tindakan ini akan mengurus url seperti /cars/usa/new-york
dan/cars/usa/texas/dallas
, yang akan memetakan masing-masing tindakan Indeks pertama dan kedua.
Memeriksa contoh controller ini terbukti bahwa itu melampaui pola rute default yang disebutkan di atas. Default berfungsi dengan baik jika struktur url Anda benar-benar cocok dengan konvensi penamaan kode Anda, tetapi ini tidak selalu terjadi. Kode harus deskriptif dari domain, tetapi url sering harus lebih jauh karena konten mereka harus didasarkan pada kriteria lain, seperti persyaratan SEO.
Manfaat dari pola perutean default adalah secara otomatis membuat rute unik. Ini diberlakukan oleh kompilator karena url akan cocok dengan tipe dan anggota pengontrol yang unik. Menggulirkan pola rute Anda sendiri akan membutuhkan pemikiran yang cermat untuk memastikan keunikan dan bahwa mereka bekerja.
Catatan penting Satu-satunya kelemahan adalah bahwa menggunakan perutean untuk menghasilkan url untuk tindakan yang berlebihan tidak bekerja ketika didasarkan pada nama tindakan, misalnya, ketika menggunakan UrlHelper.Action. Tapi itu berfungsi jika seseorang menggunakan rute bernama, misalnya, UrlHelper.RouteUrl. Dan menggunakan rute bernama, menurut sumber yang dihormati, cara untuk pergi bagaimanapun ( http://haacked.com/archive/2010/11/21/named-routes-to-the-rescue.aspx/ ).
Semoga berhasil!