3

我确实在这里这里关注了这个博客。

我有以下问题。

我表格中的一个字段是 currecy 格式,来自巴西。我正在使用客户端验证。除了一个问题,一切都很好。

我有 2 个验证:

[DisplayName("Taxa de adesão")]
[MoedaReal(ErrorMessage = "Taxa deve ser numérico")]        
[Required(ErrorMessage = "Taxa é obrigatório")]
public decimal ValorAdesao { get; set; }

REQUIRED 规则可以正常工作,MoedaReal 规则可以正常工作。在这些规则通过之后,一个最终规则被触发:

  • Taxa de adesão 字段必须是数字

我已经尝试在这一行中更改 web.config:

<globalization culture="pt-br" uiCulture="pt-br" />

我接受的数字格式是:

1,00
11,00
111,00
1.111,00
11.111,00
111.111,00
1.111.111,00
1.111.111.111.111,00

我怎样才能“愚弄”.NET 来接受这种格式?因为它需要 DECIMAL 格式。

4

1 回答 1

2

您无法欺骗默认模型绑定器。它只是尝试使用 web.config 中指定的文化将请求字符串值解析为十进制。因此,由于您还使用客户端验证,因此客户端和服务器之间可能存在文化差异。例如,可以将浏览器配置为使用 en-US 和服务器 pt-BR,然后您可能会遇到问题。你可以试试这个:

<globalization culture="auto" uiCulture="auto" />

这意味着服务器使用的文化将由客户端决定。如果这不起作用,您还有其他几种可能性:

  • 编写自定义模型绑定器
  • 使用字符串而不是十进制,然后手动进行解析
于 2011-02-03T19:15:13.580 回答