среда, 17 февраля 2010 г.

DateTime, Currency ... Regional Settings.

Давно хотел разобраться с региональными установками, да все как-то или не надо было или некогда.
Вобщем, если у вас сервер английский, а приложение ASP.NET надо заставить выводить денежные типы иль дату/время в удобоваримом для вас формате, то просто в
web.config в секцию system.web добавьте globalization culture="ru-RU" (если вы русский конечно -) ).

Другое дело, если имеем дело с денежным типом. Вот мне как программисту ну очень нравится в качестве разделителя дробной части точка. Не перенастраивать же региональные установки сервера? хочется как-то не зависеть от этого момента.
Тут уж, если мы используем объект, то можно написать хитрое свойство

public string PriceFmt
{
get { return (price.HasValue) ? price.Value.ToString(CommonConst.Decimal2Format) : ""; }
set { price = Convert.ToDecimal(value); }
}

public static class CommonConst
{
public const string Decimal2Format = @"0.##";
}

CommonConst выводит денежное представление так, как надо вам.
Правда я не уверен в строке set { price = Convert.ToDecimal(value); }
Тут бы надо парсить предварительно переданное значение value, посмотреть его на предмет запятой и все такое. ну и тогда уже конверт в Decimal.

Творческих успехов -)