2

我在 InvariantCulture (16.4) 中发布了一个十进制形式值,并且很惊讶它没有到达我的德语系统上的模型。

我必须使用德语格式(16,4)。有没有办法配置用于解析参数的语言?

编辑:调试到源代码后发现 ValueProviderDictionary 中的语言特定部分

填充字典。那里的文档内容如下:

  1. 请求表单提交(应该具有文化意识)
  2. 来自 RouteData 的值(可能来自输入的 URL 或来自路由的默认值)
  3. URI 查询字符串

1.takes CurrentCulture 2./3。采取不变文化

这对我不起作用:如果我发布一个值或将其放入查询字符串中,我不会期望在使用文化方面有不同的行为。如果用户手动填写可解析的值,这可能是必要的,但如果您填写列表框的值,这很奇怪。如果我可以在两个版本之间切换,我认为理想的解决方案是。

无论如何,我现在需要找到一种方法来在调用 PopulateDictionary 之前设置 CultureInfo.CurrentCulture。我就是这样做的:

        void Application_BeginRequest(object sender, EventArgs e)
    {
        Thread.CurrentThread.CurrentCulture = CultureInfo.InvariantCulture;

    }
4

2 回答 2

3

默认解析使用 CurrentCulture。但是,所有解析方法都采用 IFormatProvider(可以是 CultureInfo 或取决于您要解析的内容,NumberFormatInfo 或 DateTimeFormatInfo)。对于这种情况,您应该使用 InvariantCulture(后端中未向用户显示的任何内容都应该使用 InvariantCulture。)

于 2009-06-11T16:16:42.360 回答
0

这解决了问题。但请注意:如果用户以本地格式输入值,则不会对其进行解析。这在我的应用程序中几乎不会发生。希望我使用的 UI 组件将允许不同的文化来显示和发布值。

    void Application_BeginRequest(object sender, EventArgs e)
    {
        Thread.CurrentThread.CurrentCulture = CultureInfo.InvariantCulture;

    }
于 2009-06-11T19:10:20.447 回答