Home Page
Articoli
Tips & Tricks
News
Forum
Archivio Forum
Blogs
Sondaggi
Rss
Video
Utenti
Chi Siamo
Contattaci
Username:
Password:
Login
Registrati ora!
Recupera Password
Home Page
Stanze Forum
ASP.NET 2.0 / 3.5 / 4.0
Cambiare parametro route
giovedì 24 gennaio 2013 - 12.57
Elenco Threads
Stanze Forum
Aggiungi ai Preferiti
Cerca nel forum
Elenco Tags
C#
|
.NET 4.0
Gemini
Profilo
| Expert
856
messaggi | Data Invio:
gio 24 gen 2013 - 12:57
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
Torna su
Stanze Forum
Elenco Threads
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 !