Ben sadece bu soruya rastladım ve şimdi oldukça eski olmasına rağmen, hala çok alakalı. İronik olarak, bu konudaki doğru bir yorum, yazıyı yazarken MVC'de kendinden itiraf eden bir acemi tarafından yayınlandı. ASP.NET belgeleri bile tamamen doğru değildir. Büyük bir projem var ve eylem yöntemlerini başarıyla aşırı yüklüyorum.
Yönlendirme anlaşılırsa, basit {controller} / {action} / {id} varsayılan rota modelinin ötesinde, denetleyici eylemlerinin herhangi bir benzersiz desen kullanılarak eşleştirilebileceği açık olabilir. Burada birisi polimorfizm hakkında konuştu ve şöyle dedi: "HTTP polimorfizmi anlamıyor", ancak yönlendirmenin HTTP ile ilgisi yoktur. Basitçe söylemek gerekirse, dize deseni eşleşmesi için bir mekanizmadır.
Bu işi yapmanın en iyi yolu, yönlendirme niteliklerini kullanmaktır, örneğin:
[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
}
}
Bu eylemler, sırasıyla birinci ve ikinci Dizin işlemleriyle eşleşecek /cars/usa/new-york
ve gibi URL'lerle ilgilenir /cars/usa/texas/dallas
.
Bu örnek denetleyicinin incelenmesi, yukarıda belirtilen varsayılan rota modelinin ötesine geçtiği açıktır. URL yapınız kod adlandırma kurallarınızla tam olarak eşleşiyorsa varsayılan değer iyi çalışır, ancak bu her zaman böyle değildir. Kod etki alanını tanımlayıcı olmalıdır, ancak içeriği SEO gereksinimleri gibi diğer ölçütlere dayandığından, URL'lerin genellikle daha ileri gitmesi gerekir.
Varsayılan yönlendirme düzeninin yararı, otomatik olarak benzersiz yollar oluşturmasıdır. URL'ler benzersiz denetleyici türleriyle ve üyelerle eşleşeceğinden bu derleyici tarafından uygulanır. Kendi rota modellerinizi yuvarlamak, benzersizliği ve bunların çalışmasını sağlamak için dikkatli bir düşünce gerektirir.
Önemli not Tek dezavantajı, aşırı yüklenmiş eylemler için URL oluşturmak üzere yönlendirme kullanmanın, bir eylem adına dayanıldığında, örneğin UrlHelper.Action kullanırken işe yaramamasıdır. Ancak, adlandırılmış yollar kullanırsa çalışır, örneğin UrlHelper.RouteUrl. Ve adlandırılmış yolları kullanmak, saygın kaynaklara göre, yine de gitmenin yoludur ( http://haacked.com/archive/2010/11/21/named-routes-to-the-rescue.aspx/ ).
İyi şanslar!