在我的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信息它按预期工作,但我不想每次我需要显示数字,日期或小数时这样做。我也喜欢使用DisplayFor,它不支持IFormatProvider参数。
<%:Model.Amount.ToString("C2", System.Globalization.CultureInfo.CurrentUICulture)%>
如何在不改变系统文化的情况下更改格式?
这是在Azure中运行的,如果我将文化更改为“da-DK”,则在保存到Azure Table存储时会丢失所有小数点! #BUG
答案 0 :(得分:3)
UI文化用于查找和加载资源,文化用于格式化。
因此,不采用文化的各种ToString(string)
和String.Format
重载将使用该主题的当前文化(System.Globalization.CultureInfo.CurrentCulture
)进行格式化。
如果您想将丹麦格式用于货币,日期,...,则Thread.CurerentThread.CurrentCulture
需要设置为CultureInfo.GetCultureInfo("da-DK")
(直接或间接)。
总结:您的文化和UI文化是错误的。