【问题标题】:Culture formatting of an object property对象属性的文化格式
【发布时间】:2013-03-15 11:21:26
【问题描述】:

我有一个带有数字属性(双精度)的对象,并且没有特定的文化集。 当用户登录网站时,此属性来自数据库。 数据库中的文化格式为 en-GB。

当属性被调用并返回到网站上的标签时,数字会以其当地文化格式显示。

我的问题是,对象属性是否保留了 en-GB 文化格式,而浏览器仅以本地文化格式显示它,或者,对象是否实际上将该属性存储在用户本地文化格式?

我在处理不同文化(多语言网站)的数字格式时遇到了很多麻烦,我想知道我应该如何处理这些属性,因为我必须根据这些数字和其他数字输入进行计算网站上的用户以本地格式向用户显示,但始终以本地格式 (en-GB) 将数据提交回我们的数据库。

【问题讨论】:

    标签: c# asp.net culture object-properties


    【解决方案1】:

    该物业不存储文化。格式基于Thread.CurrentUICulture,这是服务器端的文化。

    假设您正在开发一个 ASP.NET 网站:

    CultureInfo culture = new CultureInfo(Request.UserLanguages[0]);
    return double.Parse("1.5", culture.NumberFormat);
    

    这将使用客户端提供的文化设置转换双精度。

    欲了解更多信息:http://www.hanselman.com/blog/GlobalizationInternationalizationAndLocalizationInASPNETMVC3JavaScriptAndJQueryPart1.aspx

    【讨论】:

      【解决方案2】:

      数字值本身只是一个数字。数字的格式取决于您如何向用户呈现该数字的文本表示。

      从用户输入中解析数字值将再次取决于您允许用户输入值的方式。只要知道输入字符串的文化,就可以将其解析回一个与文化无关的实际数字。

      【讨论】:

      • 所以你的意思是,当使用对象来源值和用户输入值的混合进行计算时,我只需要为用户输入值提供文化信息?这同样适用于隐藏字段值作为用户输入值吗?
      • 基本上,是的,您需要了解用户输入的文化才能解析它。对于隐藏字段,最简单的做法是使用当前文化输出,因为我相信double.Parse(string) 默认会使用当前文化。
      • 谢谢,这让我明白了。数字不是我的强项,但我正在慢慢地解决这个问题! :)
      猜你喜欢
      • 2016-07-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-12-31
      • 2018-01-25
      • 1970-01-01
      • 1970-01-01
      • 2020-03-23
      相关资源
      最近更新 更多