Как изменить двойной формат текущей культуры asp.net

У меня есть веб-страница со следующим TextBox:

<asp:TextBox ID="txtSum" runat="server"></asp:TextBox>  

и сравните Validator, чтобы проверить это:

<asp:CompareValidator ID="CompareValidator1" runat="server" Display="Dynamic" ControlToValidate="txtSum" ErrorMessage="less than 0" ValueToCompare="0" Type="Double" Operator="GreaterThan">  
</asp:CompareValidator>

Когда я установил Культуру страницы на русский язык, проверка сравнения не работает.
Я обнаружил, что причина в том, что номер формата отличается между английским и русским языками.
Я попытался изменить формат следующим образом:

NumberFormatInfo format = CultureInfo.CreateSpecificCulture("en-US").NumberFormat;  
Thread.CurrentThread.CurrentCulture.NumberFormat = format;

Но это не работает. в отладке я вижу, что NumberFormat культуры изменился, но на странице я получаю сообщение меньше 0.

как я могу решить это?

1 ответ

Проблема, с которой вы столкнулись, связана с культурой браузера. Культура браузера русская, и выполнение вашего кода в IIS может иметь культуру английского языка. Всегда культура браузера проходит мимо. Вам нужно проанализировать двойное значение с использованием инвариантной культуры или изменить текущую культуру пользовательского интерфейса, чтобы она работала.

protected override void InitializeCulture()
{
    Page.Culture = CultureInfo.CreateSpecificCulture("en-US");
    Page.UICulture = CultureInfo.CreateSpecificCulture("en-US");    
}
Другие вопросы по тегам