Pergunta

Um ASP: RangeValidator retira suas informações de cultura da página/ tópico e todos os conselhos on -line sobre a obtenção da cultura certa parece ser definir o CultureInfo no tópico.

O West Wind Blog de Rick Strahl é um conselho típico

No entanto, devido a problemas de executar o código do servidor dessa maneira, estamos retirando o código que estávamos usando anteriormente que seguiram esse conselho.

Minha pergunta é: existe uma maneira de definir a cultura de um RangeValidator sem mexer com a cultura principal da página/ thread. Quero que os RangeValidators respeitem as configurações do navegador, mas infelizmente eles estão respeitando a cultura do servidor.

Foi útil?

Solução

Como não houve respostas para isso, vou responder minha própria pergunta.

A resposta é que isso não parece ser possível- não há como definir diretamente a cultura para um validador.

A maneira pela qual eu consegui atingir meus objetivos de ter o código do servidor em execução sempre em uma cultura inglesa, mas depois de fazer com que os validadores trabalhassem na cultura do navegador era definir o Thread CurrentCulture no final de Page_Prender. Portanto, até esse ponto, o código é executado na cultura inglesa, mas definimos a cultura a tempo de estar em vigor quando o tempo de execução do ASP.NET o usar para configurar os validadores.

Isso funciona bem para a ação do lado da Cient dos validadores, no meu caso, permitindo que os usuários de um navegador francês inseram números em um formato francês. Mas há mais um Gotcha- Se você tiver código para validar o lado do servidor em envio/ postback, essa validação agora falhará- parece que, no postback, as configurações originais da cultura do validador não são retidas, elas usam a cultura em vigor no Tempo em que são validados no lado do servidor: é claro que os números de francês não são vistos como válidos e a validação falha.

Espero que isso ajude qualquer outra pessoa que encontre o mesmo problema

Outras dicas

Outra resposta (e IMHO melhor) é usar o código do servidor embutido no 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" />

Sugerido por esse link.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top