C# 对象属性的区域性格式

C# 对象属性的区域性格式,c#,asp.net,culture,object-properties,C#,Asp.net,Culture,Object Properties,我有一个带有number属性(double)的对象,并且没有特定的区域性集。 此属性是在用户登录网站时从数据库派生的。 数据库中的区域性格式为en GB 调用属性并返回到网站上的标签时,号码将以其本地区域性格式显示 我的问题是,对象属性是否保留了en GB区域性格式,而浏览器仅以本地区域性格式显示它,或者,对象是否实际将该属性存储在用户本地区域性格式中? 我在处理不同文化(多语言网站)的数字格式时遇到很多麻烦,我想知道我应该如何处理这些属性,因为我必须根据用户在网站上输入的这些数字和其他数字进行

我有一个带有number属性(double)的对象,并且没有特定的区域性集。 此属性是在用户登录网站时从数据库派生的。 数据库中的区域性格式为en GB

调用属性并返回到网站上的标签时,号码将以其本地区域性格式显示

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


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

属性不存储文化。格式化基于服务器端的区域性
Thread.CurrentUICulture

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

CultureInfo culture = new CultureInfo(Request.UserLanguages[0]);
return double.Parse("1.5", culture.NumberFormat);
这将使用客户端提供的区域性设置转换双精度


有关详细信息:

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


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

那么您的意思是,当使用对象源值和用户输入值的混合进行计算时,我只需要提供用户输入值的区域性信息?这同样适用于隐藏字段值作为用户输入值吗?本质上,是的,您需要知道用户输入的区域性才能解析它。对于隐藏字段,最简单的方法是使用当前区域性进行输出,因为我相信
double.Parse(string)
将默认使用当前区域性。谢谢,这为我澄清了这一点。数字不是我的强项,但我正在慢慢地思考这个问题!:)