Ceci est une version plus spécifique et plus propre de cette question - DateTimeFormat différent pour les environnements de développement et de test
Dans la méthode Application_BeginRequest () de global.asax.cs dans mon projet ASP.NET MVC, il y a du code:
Thread.CurrentThread.CurrentCulture = CultureInfo.CreateSpecificCulture("en-GB");
Lorsque je définis un point d'arrêt sur une action du contrôleur, la valeur suivante de Thread.CurrentThread.CurrentCulture s'affiche:
La question est - Quels paramètres dans IIS sont responsables de cela et comment puis-je les remplacer?
Eh bien, je n'ai pas trouvé le paramètre IIS responsable, mais je l'ai remplacé dans Application_PreRequestHandlerExecute () et cela a finalement fonctionné:
Thread.CurrentThread.CurrentCulture = CultureInfo.CreateSpecificCulture("en-GB");
Plutôt que de définir la culture du Thread, vous pouvez la spécifier dans le fichier web.config comme suit:
<configuration>
<system.web>
<globalization uiCulture="en-GB" culture="en-GB" />
</system.web>
</configuration>
C’est une façon plus "appropriée" de spécifier la culture dans ASP.NET.
Je pense que c’est une bonne option de laisser le client (c’est-à-dire un agent utilisateur/navigateur) décider de la culture qu’il souhaite . Cela peut être fait en définissant les attributs culture
et uiCulture
de l’élément globalization
dans web.config sur auto
. Voir "Version 1".
Vous pouvez également faire quelque chose comme: Prenez le paramètre broswers, mais sinon, utilisez en-US
comme valeur de repli. Voir "Version 2".
Version 1:
<configuration>
<system.web>
<globalization culture="auto" uiCulture="auto"/>
</system.web>
</configuration>
Version 2:
<configuration>
<system.web>
<globalization culture="auto:en-US" uiCulture="auto:en-US" />
</system.web>
</configuration>
Voir également cet article pour plus d’informations: Détection automatique et définition du paramètre régional ASP.NET en fonction du paramètre régional du navigateur
Pour définir une culture par défaut pour votre application dans MVC, vous pouvez facilement ajouter ceci route dans votre RouteConfig class:
foreach (var route in routes.Cast<Route>().Where(route =>
route.GetType() == typeof(MultiLingualRoute)))
{
route.Url = "{language}/" + route.Url;
route.Defaults.Add("language", "YOUR-DEFAULT");
}