2010-09-03 15 views

cevap

15

aşağıdaki eşleme eklediğinizde: Eğer eylem yöntemine dizede 'url' elde edebilirsiniz

routes.MapRoute("hierarchy", "{action}/{*url}" 
    new { controller = "Home", action = "Index" }); 

: hiyerarşisi sonra kolayca elde edilir

public ActionResult myAction(string url) 
{ 
    ... 
} 

:

string[] hierarchy = url.Split('/'); 

Dize değerleri listesinden bir url oluşturma, bir similair yaklaşımı kullanılarak yapılabilir:

string firstPart = hierarchy.Count() > 0: hierarchy[0] : string.Empty; 
StringBuilder urlBuilder = new StringBuilder(firstPart); 
for (int index = 1; index < hierarchy.Count(); index++) 
{ 
    urlBuilder.Append("/"); 
    urlBuilder.Append(hierarchy[index]); 
} 

urlBuilder sonra örneğin bir eylem linkinde kullanılabilir: Bu sorunun

<%= Html.ActionLink("Text", new { Controller="Home", Action="Index", Url=urlBuilder.ToString() }) %> 
+0

gibi daha kontrol etmedim ama işe yarıyor gibi görünüyor. Rota bağlantısı oluşturmaya ne dersiniz? Rota verileri olarak bir dizi geçmek istiyorum. Herhangi bir fikir? – Sonia

+0

Yayına bir yaklaşım ekledim. – Jeroen

+1

Mükemmel çalışıyor! Bu bir stil meselesidir, ancak urlBuilder yazmayı kullanmak yerine string.Join ("/", strArray) kullanılır. – Sonia

1

kesinlikle yazılı urlBuilder kullanmak için ihtiyaç. T4MVC

+0

Bu neden yardımcı olur? Bir örnek verebilir misin? – Rup