Pregunta

Un ASP:. RangeValidator toma de información de la página de la cultura / hilo y todos los consejos en línea en torno a conseguir la cultura adecuada parece ser la de establecer el CultureInfo en el hilo

el blog viento del oeste de Rick Strahl es típico consejo

Sin embargo, debido a problemas al ejecutar el código del servidor de esta manera, estamos Excluyendo el código que estaba utilizando anteriormente que siguió este consejo.

Mi pregunta es: ¿hay una manera para que fije la cultura de una RangeValidator sin jugar con el cultivo principal Página / hilo. Quiero que los RangeValidators a respetar la configuración del navegador, pero desafortunadamente están respetando la cultura del servidor en su lugar.

¿Fue útil?

Solución

Como no ha habido respuestas a esta Voy a responder a mi propia pregunta.

La respuesta es que esto no parece ser posible-no hay manera de establecer la cultura de un validador de forma directa.

La forma en que yo era capaz de lograr mis objetivos de tener el código del lado del servidor que ejecuta siempre en una cultura Inglés, pero luego haciendo que los validadores de trabajo en la cultura del navegador fue para establecer el CurrentCulture hilo al final de Page_PreRender. Por lo tanto, hasta este momento se ejecuta el código en la cultura Inglés, pero hemos creado la cultura en el tiempo para que sea vigente para cuando los usos asp.net de tiempo de ejecución que establecen los validadores.

Esta bien que funciona para la acción del lado ciente de los validadores, en mi caso, permitiendo a los usuarios en un explorador francés para introducir números en un formato francés. Pero hay una mayor gotcha- si tiene código para validar lado del servidor en enviar / devolución de datos, esta validación será ahora fail parece que en la devolución de datos no se conservan los ajustes originales de la cultura del validador, utilizan la cultura en su lugar en el momento en que se validan en el servidor:., por supuesto, los números franceses no son entonces considerados como válidos, y no pasa la validación

Espero que esto ayude a otra persona que se encuentra con el mismo problema

Otros consejos

Otra (y en mi humilde opinión, mejor) respuesta es usar el código de servidor en línea en el 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" />

este enlace .

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top