MVC TextBoxFor中的十进制数值由小数位

时间:2016-03-22 14:44:31

标签: c# asp.net-mvc razor

当打开一个包含带小数位数的(剃刀)页面时(在这种情况下设置为4),逗号分隔符被解释为千位分隔符,它将数字扩展到它的小数位,如图所示:

1

这在NopCommerce 3.8开发树的管理面板中发生,并且仅在远程服务器上发生。我在本地调试版本中没有看到这个问题,所以这可能与服务器设置有关,甚至与底层数据库(Microsoft SQL-Server)有关。我不确定这是否是NopCommerce问题,所以我并不限制它为该标签。

我知道NopCommerce正在强制管理面板中的文化,因为Kendo Grid的工作原理。同样,我不确定这与实际问题有什么关系。

这个问题也体现在文本框不允许''字符。我只能使用'。试图保存一个类似于' 0.20'以消息终止:

  

价值' 0.2000'对...无效。

更新1(Global.asax.cs中设置的文化):

if (webHelper.GetThisPageUrl(false).StartsWith(string.Format("{0}admin", webHelper.GetStoreLocation()),
    StringComparison.InvariantCultureIgnoreCase))
{
    //admin area


    //always set culture to 'en-US'
    //we set culture of admin area to 'en-US' because current implementation of Telerik grid 
    //doesn't work well in other cultures
    //e.g., editing decimal value in russian culture
    CommonHelper.SetTelerikCulture();
}
else
{
    //public store
    var workContext = EngineContext.Current.Resolve<IWorkContext>();
    var culture = new CultureInfo(workContext.WorkingLanguage.LanguageCulture);
    Thread.CurrentThread.CurrentCulture = culture;
    Thread.CurrentThread.CurrentUICulture = culture;
}

1 个答案:

答案 0 :(得分:1)

这似乎与它正在使用的文化有关。尝试指定在web.config中使用哪种文化:

<configuration>
   <system.web>
      <globalization uiCulture="en" culture="en-US" />