Cambiare parametro route

giovedì 24 gennaio 2013 - 12.57
Tag Elenco Tags  C#  |  .NET 4.0

Gemini Profilo | Expert



Ciao a tutti
vorrei al click du un tatsto cambiare la lingua in un sito multilingua. Nel sito utilizzo il routing di asp.net.
Se mi trovo su www.miosito.com/it/default.aspx e clicco sulla lingua inglese vorrei andare su www.miosito.com/en/default.aspx
Vorrei trovare una soluzione più l'elegante al semplice replace di it con en.

Mi hanno suggerito di fare così:
//ottengo i valori della route corrente. Non ho bisogno di conoscerne il nome
var datiRoute = Page.RouteData.Values;
//dai dati della route corrente cambio giusto il valore della lingua
datiRoute["lingua"] = "en";
//e poi uso GetRouteUrl per ricalcolarmi l'url e assegnarlo al link
string url = GetRouteUrl(datiRoute);

Solo che ricevo come url: www.miosito.com/en/areariservata/default.aspx

Ho provato anche così:
Response.RedirectToRoute(new RouteValueDictionary { { "lingua", "en" } });
ma in questo caso va su: www.miosito.com/admin/default.aspx

Dove sbaglio? Come posso cambiare un parametro di un route in un indirizzo?

Questi sono i routes che ho definito:
routes.RouteExistingFiles = true;
routes.MapPageRoute("Prodotti", "{lingua}/prodotti/{categoria}/{codice_prodotto}-{prodotto}.aspx", "~/prodotto.aspx", false, null, new RouteValueDictionary { { "lingua", RegExp.LINGUE } });
routes.MapPageRoute("ProdottiCategorie", "{lingua}/prodotti/{id_categoria}-{categoria}.aspx", "~/prodotti_categoria.aspx", false, null, new RouteValueDictionary { { "lingua", RegExp.LINGUE } });
routes.MapPageRoute("Offerte", "{lingua}/offerte/{codice_offerta}-{offerta}.aspx", "~/offerta.aspx", false, null, new RouteValueDictionary { { "lingua", RegExp.LINGUE } });
routes.MapPageRoute("News", "{lingua}/news/{id_news}-{news}.aspx", "~/news-leggi.aspx", false, null, new RouteValueDictionary { { "lingua", RegExp.LINGUE } });
routes.MapPageRoute("AreaRiservata", "{lingua}/area_cliente/{pagina}.aspx", "~/area_cliente/{pagina}.aspx", false, null, new RouteValueDictionary { { "lingua", RegExp.LINGUE } });
routes.MapPageRoute("AdminRoot", "Admin/{pagina}.aspx", "~/Admin/{pagina}.aspx");
routes.MapPageRoute("Admin", "Admin/{cartella}/{pagina}.aspx", "~/Admin/{cartella}/{pagina}.aspx");
routes.MapPageRoute("Home", "{lingua}/{pagina}.aspx", "~/{pagina}.aspx", false, null, new RouteValueDictionary { { "lingua", RegExp.LINGUE } });

grazie mille

RispostaRisposta
CitazioneCitazione
EliminaElimina
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2025
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5