Я пишу банковскую систему, и мой клиент хочет поддерживать российские и американские числовые стандарты в качестве разделителя десятичных знаков. Соответственно .
и ,
.
Теперь только ,
работает правильно. Возможно из-за формата ОС веб-сервера (установлен русский).
Строка, как 2000.00
, выбрасывает FormatException
:
Входная строка была в неправильном формате.
Как это исправить? У меня есть следующие две идеи:
protected void FormView1_ItemInserting(object sender, FormViewInsertEventArgs e)
{
var txtAmount = (TextBox)((FormView)sender).FindControl("txtAmount"));
txtAmount.Text = txtAmount.Text.Replace('.', ',');
}
или
protected void FormView1_ItemInserting(object sender, FormViewInsertEventArgs e)
{
var ru = new CultureInfo("ru-RU");
var en = new CultureInfo("en-US")
decimal d;
var txtAmount = (TextBox)((FormView)sender).FindControl("txtAmount"));
if (!Decimal.TryParse(value, NumberStyles.Any, ru, out d)
&& Decimal.TryParse(value, NumberStyles.Any, en, out d)
{
// data isn't in Russian format but is in American
txtAmount.Text = d.ToString(ru);
}
}
Есть еще идеи?