Asp.net 为什么Html.DisplayFor和.ToString(";C2";)不尊重当前UICulture?

Asp.net 为什么Html.DisplayFor和.ToString(";C2";)不尊重当前UICulture?,asp.net,asp.net-mvc,globalization,azure-storage,Asp.net,Asp.net Mvc,Globalization,Azure Storage,在我的ASP.MVC 2.0网站中,我在web.config中有以下设置: <globalization uiCulture="da-DK" culture="en-US" /> 当我尝试使用Html.DisplayFor()或ToString(“C2”)在视图中显示金额时,我希望得到的是“3.500,00韩元”(uiCulture),而不是“3500.00美元”(culture) posting.Amount)%%> 如果我显式地使用CurrentUICulture信息,它

在我的ASP.MVC 2.0网站中,我在web.config中有以下设置:

<globalization uiCulture="da-DK" culture="en-US" />

当我尝试使用Html.DisplayFor()或ToString(“C2”)在视图中显示金额时,我希望得到的是“3.500,00韩元”(uiCulture),而不是“3500.00美元”(culture)

posting.Amount)%%>
如果我显式地使用CurrentUICulture信息,它将按预期工作,但我不希望每次需要显示数字、日期或小数点时都这样做。我还喜欢使用DisplayFor,它不支持IFormatProvider参数

<%:Model.Amount.ToString("C2", System.Globalization.CultureInfo.CurrentUICulture)%>

如何在不更改系统区域性的情况下更改格式


这是在Azure中运行的,如果我将区域性更改为“da DK”,则在保存到Azure表存储时,所有小数点都将丢失#BUG

UI区域性用于查找和加载资源,区域性用于格式化

因此,不采用区域性的各种
ToString(string)
string.Format
重载将使用线程的当前区域性(
System.Globalization.CultureInfo.CurrentCulture
)进行格式化

如果您想对货币、日期等使用丹麦格式。。。然后需要将
Thread.CurerentThread.CurrentCulture
设置为
CultureInfo.GetCultureInfo(“da DK”)
(直接或间接)


小结:您的区域性和UI区域性是错误的。

谢谢。。。事实证明,我的困惑与Azure Developer Fabric中的一个“大”bug有关。如果区域设置使用逗号作为小数点1000,95将另存为100095。Se:@Thomas:如果在内部存储或传输到另一个系统(即不针对用户),则始终使用不变区域性或其他与区域设置无关的标准。
<%:Model.Amount.ToString("C2", System.Globalization.CultureInfo.CurrentUICulture)%>