sto migrazione di un sito da ASP.NET MVC 1 per ASP.NET MVC 2. Al momento, il sito supporta i seguenti percorsi:ASP.NET MVC 2 - do UrlParameter.Le voci opzionali devono trovarsi alla fine del percorso?
/{country}/{language}/{controller}/{action}
/{country}/{controller}/{action}
/{language}/{controller}/{action}
/{controller}/{action}
I formati per country
e language
sono distinguibili da Regex e hanno vincoli adeguati. In MVC 1, ho registrato ciascuno di questi come percorso separato - per ciascuna delle circa 20 combinazioni. In MVC 2, ho cercato di ottenere la stessa cosa lavorando con un solo percorso per coprire tutti e quattro i casi, usando UrlParameter.Optional
, ma non riesco a farlo funzionare - se definisco country
e language
come entrambi facoltativi, quindi il percorso Ad esempio, /Home/Index
non corrisponde alla rotta. Questo è quello che sto cercando di fare:
routes.MapRoute("Default",
"{country}/{language}/{controller}/{action}",
new { country = UrlParameter.Optional, language = UrlParameter.Optional,
controller = "Home", action = "Index" },
new { country = COUNTRY_REGEX, language = LANGUAGE_REGEX });
Questo è solo impossibile, perché i miei optional sono all'inizio del percorso, o sto solo perdendo qualcosa? Non riesco a trovare alcuna documentazione per dirmi che cosa sto facendo è impossibile o per indicarmi la giusta direzione.
Sono anche interessato al trucco per ottenere un tale sistema di routing se è possibile ... –
Piuttosto che specificarli tutti in uno, perché non definire solo più percorsi per gestirlo? –
Se leggi la parte centrale della domanda, è quello che sto facendo al momento. Ma in quattro combinazioni moltiplicano 20 diversi tipi di percorso che sono un sacco di mappe. Sto cercando di scoprire se posso semplificare questo utilizzando UrlParameter.Optional. –