3

価格を含む小数フィールドを持つ ViewModel オブジェクトを作成しました。それをコントローラーに投稿すると、次のようになります。

  • 「15」と入力 -> OK! コントローラは 15 を受け取ります。
  • 「15.00」と入力 -> ダメ!コントローラーは「null」フィールドを受け取ります。
  • 「15,00」と入力します -> フィールドはピリオドでフォーマットする必要があるため、検証エラーです (当面は複雑さを避けるために、1 つのフォーマット タイプに固執します)。
  • 「15.00M」と入力 -> 検証エラー、おそらく数値と見なされていないためです。

これを修正するにはどうすればよいですか? 「15.00」を正しい値にしたいのですが、これを行う方法がわかりません。インターウェブで見つけたカスタム モデル バインダーをいくつか試してみましたが、うまくいきませんでした。

4

2 に答える 2

5

これを修正する最も簡単な方法は、web.config ファイルに言語を固定することです。

<globalization culture="en-us" uiCulture="en-us" />

これを<system.web>ノードに配置する必要があります。

なぜそれが最も簡単なのですか?このようにして、含まれている JavaScript ヘルパーは問題なく検証を行うことができます (これは、数値が米国でフォーマットされた値であると仮定することによって行われます)。これは、(変更により) サーバー上で同じになります。したがって、クライアント側で有効なものはサーバー側でも有効になります (ステートメントは単純なケースと JavaScript 対応ブラウザーでのみ有効です)。

他のすべてのオプションには、MVC 3 でのローカリゼーションに関するより多くの編集、拡張、および知識が必要です。

于 2012-05-18T18:28:50.580 に答える