Dois-je remplacer les modèles de chaîne dans asp.net mvc en utilisant un ViewEngine personnalisé?

StackOverflow https://stackoverflow.com/questions/2543055

Question

Avoir un site ASP.NET MVC qui est localisée. La fonctionnalité de localisation ajoute l'ID de langue à deux chiffres à l'URL, par exemple / Es / Page. Si aucun ID de langue se trouve dans l'URL, le site passe à la culture du navigateur de l'utilisateur. Tout est bon. Cependant, un mélange de balises href codées en dur, ActionLinks, etc.,, les hyperliens du site ne comprennent pas l'ID de langue de base, donc en cliquant sur le site de la culture ensemble est perdue, et le site revient à la culture du navigateur de l'utilisateur .

Mon (paresseux) pensée est de remplacer toutes les valeurs href, qui ne pointent pas vers un site externe, avec l'URL localisée (par exemple comprennent les / es /). Dans le cas contraire, tous les liens du site devront être mis à jour pour inclure le code de la culture.

Est-ce tout simplement stupide? Ou, raisonnable, et doit être fait en utilisant un moteur de vue personnalisée, ou une autre approche?

Pas de solution correcte

Autres conseils

Ma réponse est (actuellement):

L'application dispose d'un contrôleur de base, là, je l'ai ajouté:

if (PathLanguageCode == "" && requestContext.HttpContext.Session["LanguageCode"] != null && requestContext.HttpContext.Request.RequestType == "GET")
{
    requestContext.HttpContext.Response.Redirect("/" + requestContext.HttpContext.Session["LanguageCode"] + requestContext.HttpContext.Request.RawUrl);
}

Cet exemple ne montre pas comment la variable PathLanguageCode est définie, mais il doit au moins suffire à montrer comment cela peut être effectué de manière centralisée, sans remplacer les valeurs de chaîne.

Le seul inconvénient de cette approche, que je peux voir, est que le site est vraiment pas facile pour les moteurs de recherche, etc., puisque nous finissons par faire beaucoup de réoriente.

Si vous voulez vous pouvez regarder mon approche que nous avons pris. Il parle de mettre la culture dans l'URL. Hope it helps!

Cultured Voir Engine pour MVC

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top