2

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

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

当我尝试使用 Html.DisplayFor() 或 ToString("C2") 在视图中显示金额时,我希望得到“kr. 3.500,00”(uiCulture)而不是“$3,500.00”(文化)。

<%:Html.DisplayFor(posting => posting.Amount)%>
<%:Model.Amount.ToString("C2")%>

如果我明确使用 CurrentUICulture 信息,它会按预期工作,但我不想每次需要显示数字、日期或小数时都这样做。而且我也喜欢用不支持IFormatProvider参数的DisplayFor。

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

如何在不改变系统文化的情况下更改格式?

这是在 Azure 中运行的,如果我将文化更改为“da-DK”,则在保存到 Azure 表存储时,所有小数点都会丢失!#漏洞

4

1 回答 1

3

UI 文化用于查找和加载资源,文化用于格式化。

所以不带文化的各种ToString(string)和重载将使用线程的当前文化( )来格式化。String.FormatSystem.Globalization.CultureInfo.CurrentCulture

如果您想对货币、日期等使用丹麦语格式,则Thread.CurerentThread.CurrentCulture需要设置为CultureInfo.GetCultureInfo("da-DK")(直接或间接)。

总结:你的文化和用户界面文化是错误的。

于 2010-11-13T09:56:11.680 回答