Dovrei sostituire uno schema d'incordatura in asp.net mvc utilizzando un viewengine personalizzato?
-
23-09-2019 - |
Domanda
Hai un sito ASP.NET MVC che è localizzato. La funzionalità di localizzazione aggiunge la lingua ID a due cifre per l'URL, ad esempio, / Es / Pagina. Se nessun ID della lingua si trova nella URL, il sito passa alla cultura browser dell'utente. Tutto va bene. Tuttavia, i collegamenti ipertestuali del sito, una miscela di tag href hard-coded, actionlinks, ecc, non includono l'ID lingua di base, in modo da quando si fa clic attraverso il sito della cultura set è perso, e il sito ritorna alla cultura browser dell'utente .
Il mio (pigro) il pensiero è quello di sostituire tutti i valori href, che non puntano a un sito esterno, con l'URL localizzata (ad esempio includono le / es /). In caso contrario, dovranno essere aggiornati tutti i link del sito di includere il codice della cultura.
È semplicemente stupido? Oppure, ragionevole, e dovrebbe essere fatto utilizzando un motore di visualizzazione personalizzata, o qualche altro metodo?
Nessuna soluzione corretta
Altri suggerimenti
La mia risposta è (attualmente):
L'applicazione ha un controller di base, ci ho aggiunto:
if (PathLanguageCode == "" && requestContext.HttpContext.Session["LanguageCode"] != null && requestContext.HttpContext.Request.RequestType == "GET")
{
requestContext.HttpContext.Response.Redirect("/" + requestContext.HttpContext.Session["LanguageCode"] + requestContext.HttpContext.Request.RawUrl);
}
Questo esempio non mostra come viene definita la variabile PathLanguageCode, ma dovrebbe almeno sufficiente a mostrare come questo può essere gestito centralmente, senza sostituire valori di stringa.
L'unico aspetto negativo di questo approccio, che posso vedere, è che il sito non è molto amichevole per i motori di ricerca, ecc, in quanto si finisce per fare un sacco di reindirizzamenti.
Se volete potete guardare il mio approccio che abbiamo preso. Si parla di mettere la cultura nell'URL. Speranza che aiuta!