У меня простая модель с одним десятичным свойством:
public class Model {
public decimal Quantity { get;set; }
}
На мой взгляд, у меня есть:
@Html.TextBoxFor(m => m.Quantity)
@Html.ValidationMessageFor(m => m.Quantity)
Дело в том, что когда я пытаюсь опубликовать значение с десятичной частью (например, 1,5, 2,5 и т. Д.), Я получаю ошибки проверки на стороне клиента или сервера в зависимости от того, какой NumberDecimalSeparator
я использую. Если я отправляю 1,5
, я получаю ошибку проверки на стороне клиента (data-val-number one) или если я отправляю 1.5
, я получаю ошибку проверки модели на стороне сервера - "The value '1.5' is not valid for Quantity."
. Я пытался установить NumberDecimalSeparator
вручную на Application_Start()
в Global.asax, но это не помогло.
var currentCulture = (CultureInfo)CultureInfo.CurrentCulture.Clone();
currentCulture.NumberFormat.NumberDecimalSeparator = ".";
Thread.CurrentThread.CurrentCulture = currentCulture;
Thread.CurrentThread.CurrentUICulture = currentCulture;
Когда я вручную добавил некоторые значения в базу данных и попытался их отредактировать, значение в TextBox отображается с точкой "."
, но когда я пытаюсь сохранить другое значение с точкой, я получаю ошибку проверки на стороне сервера. В чем могут быть причины? Почему не работало обновление информации о культуре вручную?
// РЕДАКТИРОВАТЬ: Мой подход к изменению currentCulture.NumberFormat.NumberDecimalSeparator
работает, но только если я делаю это каждый раз на Application_BeginRequest()
:
protected override void Application_BeginRequest(object sender, System.EventArgs e)
{
var currentCulture = (CultureInfo)CultureInfo.CurrentCulture.Clone();
currentCulture.NumberFormat.NumberDecimalSeparator = ".";
currentCulture.NumberFormat.NumberGroupSeparator = " ";
currentCulture.NumberFormat.CurrencyDecimalSeparator = ".";
Thread.CurrentThread.CurrentCulture = currentCulture;
Thread.CurrentThread.CurrentUICulture = currentCulture;
base.Application_BeginRequest(sender, e);
}
Почему не работает при запуске приложения?
culture="ru" uiCulture="ru-RU"
, также я хочу использовать точку в качестве десятичного разделителя, как это по умолчанию. - person Dmytro   schedule 31.03.2015en-US
)? - person   schedule 31.03.2015Application_AcquireRequestState
, а не вApplication_Start
- person   schedule 31.03.2015