Question

Un asp. RangeValidator prend son info culture de la page / fil et tous les conseils en ligne autour d'obtenir la bonne culture semble être de fixer le CultureInfo sur le fil

blog du vent à l'ouest de Rick Strahl est un conseil typique

Toutefois, en raison des problèmes d'exécution du code du serveur de cette façon, nous Stripping le code que nous utilisions auparavant qui a suivi ce conseil.

Ma question est: est-il un moyen pour moi de mettre en culture d'un RangeValidator sans déconner avec la page principale / culture de fil. Je veux que les RangeValidators à respecter les paramètres du navigateur, mais malheureusement, ils respectent la culture au lieu du serveur.

Était-ce utile?

La solution

Comme il n'y a pas eu de réponse à ce que je vais répondre à ma propre question.

La réponse est que cela ne semble pas être possible- il n'y a aucun moyen de définir la culture pour un validateur directement.

La façon dont j'ai pu atteindre mes objectifs d'avoir le code côté serveur qui exécute toujours dans une culture anglaise mais provoquant les validateurs de travailler dans la culture du navigateur était de mettre le fil CurrentCulture à la fin de Page_PreRender. Par conséquent, à ce stade, le code est exécuté dans la culture anglaise, mais nous avons mis la culture à temps pour qu'il soit en vigueur lorsque l'exécution asp.net utilise pour configurer les validateurs.

Cela fonctionne bien pour l'action cace côté des validateurs, dans mon cas qui permet aux utilisateurs sur un navigateur français pour saisir des chiffres dans un format français. Mais il y a une autre gotcha- si vous avez le code pour valider côté serveur soumettre / postback, cette validation va maintenant FAIL il apparaît que sur postback les paramètres de culture d'origine du validateur ne sont pas conservés, ils utilisent la culture en place au temps, ils sont validés côté serveur:. bien sûr les chiffres français ne sont alors pas considérés comme valides, et la validation échoue

J'espère que cela aide quelqu'un d'autre qui rencontre le même problème

Autres conseils

Une autre (et à mon avis mieux) réponse est d'utiliser le code de serveur en ligne dans le RangeValidator:

<asp:RangeValidator ID="txtLockMaxRangeValidator" runat="server"
     ValidationGroup="templateInfo" ControlToValidate="txtLockMaxFontSize"
     CssClass="validatorTextbox" 
     MinimumValue="<%# (0.01).ToString(System.Globalization.CultureInfo.CurrentUICulture)%>" 
     MaximumValue="9999" Type="Double" Text=">0 and <=9999" 
     ToolTip="<%$ Resources:Resource, TemplateInfo_maxFontValidator %>" 
     Display="Dynamic" />

ce lien .

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