2009-06-11 7 views
2

J'ai posté une valeur de forme décimale dans InvariantCulture (16.4) et j'ai été surpris qu'il ne soit pas arrivé au modèle sur mon système allemand.Quelle langue est utilisée pour mapper les paramètres à modéliser?

Je devais utiliser le format allemand (16,4). Est-il possible de configurer la langue utilisée pour l'analyse des paramètres?

EDIT: Après le débogage dans le code source a trouvé les parties spécifiques de langue dans ValueProviderDictionary

PopulateDictionary. La documentation y lit:

  1. Demande de soumission de formulaire (doit être conscient de la culture)
  2. Valeurs de la RouteData (peut-être à partir de l'URL tapé dans ou à partir des valeurs par défaut de l'itinéraire)
  3. URI
  4. chaîne de requête

1.takes CurrentCulture 2./3. prendre InvariantCulture

Cela ne fonctionne pas pour moi: je ne m'attendrais pas à un comportement différent en ce qui concerne l'utilisation de Culture si je poste une valeur ou la mets dans la chaîne de requête. Il peut être nécessaire si l'utilisateur remplit manuellement les valeurs analysables, mais c'est étrange si vous remplissez les valeurs d'une Listbox. Je pense que la solution idéale serait, si je pouvais passer d'une version à l'autre.

Quoi qu'il en soit, je devais trouver un moyen maintenant de définir CultureInfo.CurrentCulture avant que PopulateDictionary soit appelé. Voici comment je l'ai fait:

 void Application_BeginRequest(object sender, EventArgs e) 
    { 
     Thread.CurrentThread.CurrentCulture = CultureInfo.InvariantCulture; 

    } 

Répondre

0

Ceci a résolu le problème. Mais attention: si l'utilisateur entre des valeurs dans leur format local, il ne sera pas analysé. Cela ne se produira guère dans mon application. J'espère que les composants de l'interface utilisateur que j'utilise permettront une culture différente pour l'affichage et la publication des valeurs.

void Application_BeginRequest(object sender, EventArgs e) 
    { 
     Thread.CurrentThread.CurrentCulture = CultureInfo.InvariantCulture; 

    } 
3

L'analyse par défaut utilise CurrentCulture. Cependant, toutes les méthodes d'analyse prennent un IFormatProvider (qui peut être un CultureInfo ou en fonction de la chose que vous analysez, un NumberFormatInfo ou un DateTimeFormatInfo). Vous devriez utiliser InvariantCulture pour ce scénario (tout ce qui dans le backend n'est pas affiché pour l'utilisateur doit utiliser InvariantCulture.)

Questions connexes