2010-12-29 10 views
5

私はデータ注釈とともにクライアント側の検証にjqueryを使用しています。すべて正常に動作していますが、数値以外の値が数値のテキストボックスに入力されたときにメッセージをローカライズしたいと思います。しかし、クライアント側の検証asp.net mvcは、 'ClientDataTypeModelValidatorProvider_FieldMustBeNumeric'というキーを持つ独自のリソースファイルを使用しています。"フィールド幅は数字でなければなりません。"クライアントサイドで

どうすればいいですか?

ありがとうございました。このページの最後にあるソリューションのための

+0

の可能な複製を[asp.net MVC検証は数カスタムエラーでなければなりません](http://stackoverflow.com/questions/ 4521254/asp-net-mvc-validation-must-be-a-number-custom-error) –

答えて

2

ルック:

http://jwwishart.wordpress.com/2010/03/22/custom-server-and-client-side-required-validator-in-mvc-2-using-jquery-validate/

私は私のMVC 3 RTMプロジェクトでこれを確認し、それがうまく動作します。

+0

私はJustin Wishartが上記のリンクでClientDataTypeModelValidatorProviderについて書いたものを実装しました。 Reflectorを使用して元のクラスコードを取得し、新しいコードをローカライズリソースに指定しました。 ASP.NET MVC 3で完全に動作しています。 –

2

私はイタリア語で、10進数はドットの代わりにコンマでフォーマットされているため、同じ問題が発生しました。だから、アメリカでは1,000.12は1.000,12と書かれています。 MVC3にはすでにスクリプトjquery.validate.js/jquery.validate.min.js が含まれていますが、これは素晴らしいことです。

次に、別のスクリプト - methods-it.js - jquery validateプラグインローカリゼーションフォルダから取得して少し変更しました。

jQuery.extend(jQuery.validator.methods, { 
    date: function (value, element) { 
     return this.optional(element) || /^\d\d?\.\d\d?\.\d\d\d?\d?$/.test(value); 
    }, 
    number: function (value, element) { 
     return this.optional(element) || /^-?(?:\d+|\d{1,3}(?:\.\d{3})+)(?:,\d+)?$/.test(value); 
    }, 
    range: function (value, element, param) { 
     var val = value.replace(",", "#").replace(".", ",").replace("#", "."); 
     return this.optional(element) || (val >= param[0] && val <= param[1]); 
    } 
}); 

この小さなコードは、日付(イタリア語の書式設定)、浮動小数点数、および値の範囲を扱います。 これは素晴らしい作品です。 残念ながら、これは単なる指示であり、解決策ではありません。すべてのロケールで修正する必要があるためです。

+0

jQuery.validatorは定義されていません何が欠けていますか? –

+0

Microsoft JScriptランタイムエラー:プロパティ 'メソッド'の値を取得できません:オブジェクトがnullまたは未定義です。何か不足していますか? – Jorre

0

私はそれが簡単だけでビューモデルにDataAnnotationsを使用することが分かっ:

[RegularExpression("([0-9]+)", ErrorMessageResourceType = typeof(ErrorMessage), ErrorMessageResourceName = "NumberInvalid")] 
関連する問題