.net mvc在同一页面上应用不同的区域设置

时间:2013-10-31 14:20:56

标签: c# javascript asp.net-mvc asp.net-mvc-4 razor

我有一个MVC网站,我想用丹麦语运行。

基于这个线程,我得到了它。

.Net MVC4 Culture set correct, but validation still English

但我也有一些地方可以生成JavaScript,在这里我希望区域设置为英文,因为这是JavaScript中唯一有效的。

@Model.price

将给出9,95

string.Format("{0:#.##}",Model.price)

还给出9,95。

并且

string.Format("{0:#,##}",Model.price)

会给10。

那么当网站使用Razor时,使用Razor构建正确的“英语”JavaScript的最佳做法是什么?

1 个答案:

答案 0 :(得分:1)

你的问题是没有特定文化的String.Format仍然会使用当前线程的文化来解析和转换为字符串。通过将页面的文化设置为丹麦语,您指定丹麦语也应该用于字符串转换。

您可以通过将其作为第一个参数传递给String.Format来指定要使用的文化,例如:

string.Format(CultureInfo.InvariantCulture,"{0:#,##}",Model.price)

您可以在任何需要IFormatProvider参数的方法中传递文化。 String.Format和几乎所有ToString()和Parse()方法都有接受此参数的重载。

像Resharper这样的工具甚至会在您使用这种方法时警告您可能的转换错误而不传递特定的文化

顺便说一下,正确使用的文化是CultureInfo.InvariantCulture,而不是英文,否则你最终会得到美式日期等。