Как изменить двойной формат текущей культуры 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");
}