3

私はこのブログherehereをフォローしました。

そして、私は次の問題を抱えています。

私のフォームの 1 つのフィールドは、ブラジルの通貨形式です。クライアント側の検証を使用しています。1つの問題を除いて、すべてがうまく機能します。

私は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 ルールは正常に機能します。これらのルールが正常に渡された後、1 つの最終ルールがトリガーされます。

  • フィールド 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 で指定されたカルチャを使用して、要求文字列値を 10 進数に解析しようとします。したがって、クライアント検証も使用しているため、クライアントとサーバーの間に文化の違いがある可能性があります。たとえば、ブラウザーが en-US とサーバー pt-BR を使用するように構成されていると、問題が発生する可能性があります。これを試すことができます:

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

これは、サーバーが使用するカルチャがクライアントによって決定されることを意味します。これが機能しない場合は、他にいくつかの可能性があります。

  • カスタム モデル バインダーを作成する
  • 10 進数の代わりに文字列を使用し、手動で解析を行います
于 2011-02-03T19:15:13.580 に答える