2009-10-12 2 views
5

ho bisogno di utilizzare un URL simile a questo:Trattare ASP.net Itinerari con n slash utilizzando regex

http://mydomain.com/Box/Categ1/Categ2/Categ3/.../CategN/id1,id2,id3,...,idN

poi ho cercato di creare un nuovo percorso in questo modo ...

routes.MapRoute(
    "Box", 
    "Box/{data}", 
    new { controller = "Box", action = "Index"}, 
    new { data = @"([a-zA-Z0-9-,]+/?)+" } 
); 

Ma non funziona. Se uso qualsiasi carattere anziché "/" (barre) funziona correttamente. È possibile usare le barre? Mi piacerebbe davvero vedere l'URL come questo.

risposta

11

Se si desidera impostare la variabile di dati su tutto ciò che viene dopo Box, basta utilizzare il parametro catch-all.

routes.MapRoute(
    "Box", 
    "Box/{*data}", 
    new { controller = "Box", action = "Index"} 
); 
+0

Davvero ... Grazie amico! – Wellington

+0

Nessun problema. Per impostazione predefinita, il motore di routing asp.net mvc separa tutto in token usando la barra come divisore ... quindi non sono sicuro di come funzionerebbe nelle espressioni regolari, ma probabilmente non va bene;) – womp