Impostare la cultura di un asp.net RangeValidator
-
21-09-2019 - |
Domanda
Un asp:. RangeValidator prende l'informazioni cultura dalla pagina / filo e tutti i consigli on-line intorno a ottenere la giusta cultura sembra essere quella di impostare il CultureInfo sul filo
blog ovest vento di Rick Strahl è un consiglio tipico
Tuttavia, a causa di problemi che eseguono il codice del server in questo modo, stiamo escludendo il codice che usavamo in precedenza che ha seguito questo consiglio.
C'è un modo per me di impostare la cultura di un RangeValidator senza fare confusione con la cultura principale pagina / discussione:La mia domanda è. Voglio che i RangeValidators a rispettare le impostazioni del browser, ma purtroppo sono nel rispetto della cultura server invece.
Soluzione
Per quanto non ci sono state risposte a questa che sto per rispondere alla mia domanda.
La risposta è che questo non sembra essere possibile- non v'è alcun modo per impostare la cultura per un validatore direttamente.
Il modo in cui sono stato in grado di realizzare i miei obiettivi di avere il codice lato server che esegue sempre in una cultura inglese ma poi facendo i validatori a lavorare nella cultura del browser è stato quello di impostare la CurrentCulture filo alla fine del Page_PreRender. Pertanto fino a questo punto il codice viene eseguito nella cultura inglese, ma abbiamo impostato la cultura in tempo per essere in vigore per quando il runtime asp.net lo usa per impostare i validatori.
Questo funziona bene per l'azione ciente lato dei validatori, nel mio caso permettendo agli utenti su un browser francese per inserire i numeri in un formato francese. Ma v'è un ulteriore gotcha- se si dispone di codice per la convalida lato server su inviare / postback, questa convalida ora perire- sembra che il postback le impostazioni di lingua originali del validatore non vengono mantenute, usano la cultura in atto al momento in cui vengono convalidati sul lato server:., naturalmente, i numeri francesi non sono visti poi come validi, e la convalida non riesce
Spero che questo aiuta chiunque altro che incontra lo stesso problema
Altri suggerimenti
Un'altra risposta (e secondo me migliore) è quello di utilizzare il codice del server in linea nella 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" />