2008-08-18 27 views
3

Yaklaşan bir proje için ASP.NET MVC çerçevesini öğrenmeyi düşünüyorum. Site haritası aralığına dayalı uzun URL'ler oluşturmak için gelişmiş yönlendirmeyi kullanabilir miyim?Bir Site Haritasından ASP.NET MVC rotaları oluşturabilir miyim?

Örnek navigasyon yolu:
Ana Sayfa> Alışveriş> Ürünler> Ev> Mutfak> Tencere> Cooksets> Yapışmaz

Tipik (Bence) MVC URL:
http://example.com/products/category/NonstickCooksets

İstenilen URL:
http://example.com/shop/products/household/kitchen/cookware/cooksets/nonstick

Bunu yapabilir miyim?

cevap

9

Zack, eğer doğru anlarsam alt kategorilerin sınırsız derinliğini istiyorsunuz. Hayır biggie, MVC Önizleme 3 (Bence 3 veya 4) beri bu çözüldü.

Tıpkı bir rota tanımlamak

"{controller}/{eylem}/{* categoryPath}" gibi bir url için

:

http://example.com/shop/products/household/kitchen/cookware/cooksets/nonstick

Eğer bir olmalı Bir ürün ile ShopController eylemi:

public class ShopController : Controller 
{ 
... 
    public ActionResult Products(string categoryPath) 
    { 
     // the categoryPath value would be 
     // "household/kitchen/cookware/cooksets/nonstick". Process it (for ex. split it) 
     // and then decide what you do.. 
     return View(); 
    } 
2

MVC yönlendirme, istediğiniz herhangi bir yapıyı tanımlamanızı sağlar, parçaların her birinin anlamsal olarak ne anlama geldiğini tanımlamanız gerekir. "Mağaza/ürün" gibi "kodlanmış" ve daha sonra değişken olarak "{category}/{subcategory}/{specialty}", vb. Tanımlayabilirsiniz.

Ayrıca, İsterseniz hepsinin aynı son noktaya eşlendiği birkaç rota tanımlayın. Temel olarak, bir MVC uygulamanıza bir URL geldiğinde, bu, eşleşen değişkenleri doldurur ve istekleri işleme için uygun denetleyiciye ileten bir kalıp bulana kadar yönlendirme tablosundan geçer.

Varsayılan yol basit bir Denetleyici, Eylem, Kurulum türü olsa da, kesinlikle ne yapabileceğinizin kapsamı değildir.