2011-10-17 10 views
3

私はASP.NET Webアプリケーションを持っていますが、私のビューモデルには二重フィールドのPowerPriceがありますが、ユーザーが先行ゼロを入力しなければフィールドの検証はオフになります。検証で「数字を入力してください」と表示されます。ユーザーに "0.11"を要求する代わりに ".11"を入力させるにはどうすればよいですか?先行ゼロなしのテキストボックス入力を許可する

+2

MVCがこれを処理しなければならないような気がしたので私自身の質問には答えたくありませんでしたが、2つの解決策が見つかりました。顧客検証を書いたり、Doubleの代わりに文字列を使用してTryParseそれはサーバー側です。私はこれらのソリューションのいずれかが本当に好きではありませんので、私はこの質問を残して、より良い答えが得られるかどうかを見ていきます。 –

+0

私は同じ問題があります。私は.25が数字ではなく0.25がどのようになっているのか分かりません。カンマをintに入れても同じ問題です。私はその場合も文字列を作ることに頼った。 – PilotBob

+0

まだ簡単な答えはありませんか? 0.25 == 0.25? –

答えて

1

ここで正しいタイプではない値「11」をDoubleタイプのオブジェクトに設定しています。それは常に失敗するでしょう。

あなたは私の頭の上から考えることができるいくつかのオプションがあります。

  • DoubleをStringに変更し、一度取得すると、 は、必要なものを解析しようとします。また

あるいは、

  • AjaxControlToolkit MaskEditor( http://www.asp.net/ajaxLibrary/AjaxControlToolkitSampleSite/MaskedEdit/MaskedEdit.aspxを参照)を使用 garbaggeは、正規表現のバリデータまたはカスタムバリデータの使用を入力するか、 できる内容低減するインターフェイス上であなたにあなたのコードを保つことができますJavaScriptやJQueryのようなクライアントサイドのコードを介してクライアント上に何があるかを調べるので、 ".12"のようなドットだけが心配だと言うなら、そのシナリオを検出すると先行するゼロまたは数字をあなたが望むもの。これにより、サーバに到達することを確実にします。その値は10進数値であり、サーバ側で解析または変更することなく受け入れられます。
0

私はこのanswer hereが実際の犯人を正確に特定すると信じて - 前1.10からjQuery.Validationのバージョンが壊れ検証正規表現を持っています。回答の後半のコメントに従って、jQuery.Validationを最新バージョンにアップグレードするだけです(例:nuget)。

私のケースでは、1.9.0.1から1.11.1にアップグレードするのはやりました。サーバー側/モデルバインダー/文字列ViewModelの変更はまったく必要ありません。

関連する問題