私はこの通貨フィールドでのASP.NET MVC-4のアプリケーションを持っている:通貨フィールドを検証するにはどうすればよいですか?
[DisplayFormat(ApplyFormatInEditMode = true, DataFormatString = "{0:c}", ConvertEmptyStringToNull = true)]
[DataType(DataType.Currency)]
public decimal? Price { get; set; }
これは、対応する私の見解では一部です:価格は100ユーロテキストフィールドにある場合
@Html.EditorFor(model => model.Price)
@Html.ValidationMessageFor(model => model.Price)
ビューを示しています。
100,00€
これはいいですね。
しかし、私はポストバックをしようとするとすぐに問題を抱えています。バリデーターがポップアップし、価格フィールドが数字である必要があることが示されます。
(1)私は€記号を削除し、(2)小数点記号(カンマをドットに置き換える)を置き換えた場合のみ修正できます。
解決策がない場合は、通貨記号を避けるためにDataFormatString = "{0:F2}"を変更することができます。
しかし、(アメリカン)ドットの代わりにコンマを小数点記号として受け入れるにはどうすればよいですか?
よろしくお願いします。
私はあなたがカスタムモデルのバインダーをチェックする必要があると思うこのリンクhttp://haacked.com/archive/2011/03/19/fixing-binding-to-decimals。aspx – Overmachine
@Overmachine:ご意見ありがとうございます。しかし、私はModelBinderがバリデータの問題を修正するとは思わない。言い換えれば、私は依然としてクライアントのバリデーションを望んでいます。バリデーターはまだ失敗します(ModelBinderの有無にかかわらず)、間違っていますか? – Ingmar
クライアントの検証は引き続き機能しますが、問題はポストバックを行うときに通貨記号が送信されることです。 – Overmachine