私はMVC3にjQueryの控えめな検証バージョン2.0を使用しています。最新のjquery.validate(v 1.9)もあります。このコードのポップアップフォームがあります:
$(document).ready(function () {
$('#createForm').submit(function () {
$.validator.unobtrusive.parse($('#createForm'));
(more)
(3行目は、javascriptによって追加されたフォームフィールドが検証されるために必要です。)
ビューモデルのdecimalプロパティにバインドされている入力タグに入力された$1,000.00などの値が無効であり、1,000.00が有効であることを除いて、検証は正常に機能します。明らかに、「$」はバリデーターの目には値を文字列としてキャストしています。
私はこれを何時間も調査しましたが、他に同様の質問が1つだけ投稿されていることがわかりました(SOにもあり、回答はありませんでした)。モーダルダイアログで通貨の値を処理するすべてのMVC3開発者がこれに遭遇したとは信じられません。そうでなければ、今では確かにある程度の解決策がありますよね?
DecimalBinderを作成することで、サーバー側の問題を解決しました。ここで、クライアント側の検証のためのソリューションが必要です。jquery.validate.unobtrusiveのAPIをよく調べていますが、フックが見つからないようです。標準のjavascriptライブラリを変更したくありません。