en-ZA 地区的货币小数点和千位分隔符分别是','和' ',但常用的分隔符是'.'对于十进制,加上我的用户想要','作为千位分隔符。我希望全局设置这些,这样我只需要为所有货币字段使用 {0:C}
格式字符串,而无需任何显式 Format
或 ToString
调用。
我希望能够在不更改 Web 服务器上的区域性设置的情况下执行此操作,因为我还需要将货币的小数位设置为零,因为在报告 R100k 及以上的估计时不需要美分等. 我不想随意将整个文化设置为零个位置,只为这个应用程序设置一个。
在评论他对 this question 的回答时, Jon Skeet 建议克隆当前的文化和设置并更改所需的设置。我这样做如下:
void Application_Start(object sender, EventArgs e)
{
var newCulture = (CultureInfo)CultureInfo.CurrentCulture.Clone();
newCulture.NumberFormat.CurrencyDecimalSeparator = ".";
newCulture.NumberFormat.CurrencyGroupSeparator = ",";
}
但是,如何为应用程序从此时开始处理的所有请求激活新文化?有没有其他方法可以实现我想做的事情?
最佳答案
您可以使用 Application_BeginRequest
事件为每个请求设置文化。内部事件:
var newCulture = (CultureInfo)CultureInfo.CurrentCulture.Clone();
newCulture.NumberFormat.CurrencyDecimalSeparator = ".";
newCulture.NumberFormat.CurrencyGroupSeparator = ",";
System.Threading.Thread.CurrentThread.CurrentCulture = newCulture;
System.Threading.Thread.CurrentThread.CurrentUICulture = newCulture;
关于.net - 如何覆盖 ASP.NET Web 应用程序当前区域性的货币格式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9521720/