我在InvariantCulture(16.4)中发布了一个十进制表格值,并且惊讶于它没有进入我德国系统的模型。
我不得不使用德语格式(16,4)。有没有办法配置用于解析参数的语言?
编辑: 调试完源代码后,在ValueProviderDictionary中找到语言特定的部分
PopulateDictionary。那里的文件是:
1.takes CurrentCulture 2./3。采取InvariantCulture
这对我不起作用:如果我发布一个值或将其放在查询字符串中,我不会期望有关使用Culture的不同行为。 如果用户手动填写可分析值,则可能是必要的,但如果填充列表框的值,则可能很奇怪。如果我可以在两个版本之间切换,那么理想的解决方案就是。
无论如何,我需要找到一种方法来在调用PopulateDictionary之前设置CultureInfo.CurrentCulture。这就是我做到的:
void Application_BeginRequest(object sender, EventArgs e)
{
Thread.CurrentThread.CurrentCulture = CultureInfo.InvariantCulture;
}
答案 0 :(得分:3)
默认解析使用CurrentCulture。但是,所有解析方法都采用IFormatProvider(可以是CultureInfo,也可以取决于您正在解析的东西,NumberFormatInfo或DateTimeFormatInfo)。您应该在此方案中使用InvariantCulture(后端中未显示给用户的任何内容都应使用InvariantCulture。)
答案 1 :(得分:0)
这解决了这个问题。 但要注意:如果用户以本地格式输入值,则不会对其进行解析。 这在我的申请中几乎不会发生。希望我使用的UI组件允许显示和发布值的不同文化。
void Application_BeginRequest(object sender, EventArgs e)
{
Thread.CurrentThread.CurrentCulture = CultureInfo.InvariantCulture;
}