2009-01-04 29 views
5

Şu senaryoyu nasıl kullanacağımı anlamaya çalışıyorum. Genelde, bir tabloda bir sürü kayıt var. Bunların hepsi bir ağaç oluşturmak için ID ve ParentID alanlarına sahiptir.ASP.NET MVC sayfası/alt sayfa yönlendirmesi

Page1 
- Page2 
- Page3 
Page4 
- Page5 
-- Page6 

Şimdi, Page3 ve Page6 benim yolları respectivelly /Page1/Page6 ve /Page3/Page5/Page6 gibi olmak istiyorum. Yani, tüm ebeveynleri URL'ye dahil etmek istiyorum.

Yukarıdaki sonuca ulaşmak için denetleyici eylem/yönlendirmeyi nasıl belirlerim?

Düzenleme: Yukarıdaki yapı dinamik olacağını belirtmeyi unuttum - vs. düğümleri eklenebilir/silinmiş/değişim ebeveyn,

+0

[bu] bir göz atın (http://stackoverflow.com/questions/296284/mvc-dynamic-routes) >> http://stackoverflow.com/questions/296284/mvc-dynamic- rotalar – Mark79

cevap

3

bir joker eşlemeyi kullanabilirsiniz, bkz: http://www.vergentsoftware.com/blogs/ckinsman/ASPNETMVCWildcardRoutes.aspx

Olası bir rota:

routes.MapRoute("SomeName", "{*Page}", new { controller = "ControllerName", action = "ActionName" }); 

ve eylem

dize Page kabul ve belki bir bölünme ile, elle ayrıştırmak?

düzenleme: Bu da yararlı olabilir: kontrolör adı ve eylem sabit ve url dayalı olmadığını http://weblogs.asp.net/scottgu/archive/2007/12/03/asp-net-mvc-framework-part-2-url-routing.aspx

+1

Teşekkürler, çok yardımcı oldu. Zamanımı kurtardım. –

+0

@MichaelSamteladze np, yaklaşık sekiz yıl önceydi :) – ccook

0

Not.

// place the more specific route first 
routes.MapRoute("r1", "{parent}/{child}/{subchild}", 
    new { controller = "Page", action = "Index", parent = parent, child = child, subchild = subchild }); 

routes.MapRoute("r2", "{parent}/{child}", 
    new { controller = "Page", action = "Index", parent = parent, child = child }); 


public class PageController 
{ 
    public ActionResult Index(string parent, string child, string? subchild) 
    { 
     // stuff 
    } 
}