0

Asp.Net MVC に小さな問題があります。

今のところ、私は英語でウェブサイトを開発しました。すべてが正常に機能しており、すべてのテキストは既にローカライズされており、セッションベースのシステムも既に作成されています。別の言語 (私の場合はフランス語) に移動すると、 and が "fr" から作成されたカルチャ情報に変更Thread.CurrentThread.CurrentUICultureThread.CurrentThread.CurrentCultureれます。

私の翻訳はすべて機能していますが、1 つの形で問題があります。

フランスでは、小数部分と整数部分が「,」で区切られています。サーバー検証はそれでうまく機能し、「234,512」を倍精度に変換します(「234.512」も変換します)。

しかし、クライアントの検証はこれを受け入れません。

"Le champ XYZ doit être un nombre."

したがって、正しいローカルがあります(メッセージがフランス語に翻訳されているため)が、「235,55」で編集された番号が必要なようです。

最初は大したことではないと思っていました。ユーザーは「234.512」形式で数値を入力できますが、問題はデータの編集に関するものです。スレッドはフランス語であるため、モデルを「234,512」で埋めます。 「234.512」ではなく、そのため、顧客は変更のたびにセパレーターを変更する必要があります (このフィールドを変更しない場合のイベント)。そうしないと、クライアント検証エラーが発生します (送信ボタンを押しても呼び出しは行われません)。 、何度か確認しました)。

では、現在のロケールで double のクライアント検証スクリプトを動作させるにはどうすればよいでしょうか?

どうもありがとうございました!

4

2 に答える 2

2

区切り文字としてドットのみを受け入れる jquery.validate.js (または jquery.validate.unobtrusive.js) に問題があるようです。

解決策については、次の投稿を ご覧ください。 http://www.mfranc.com/2011/07/05/jquery-valdiator-modyfing-decimal-separator/

また

http://www.campusmvp.net/asp-net-mvc-3-and-the-coma-in-decimals/

于 2012-09-07T08:23:15.180 に答える
1

既知の問題です。jquery内のJavascriptバリデーターは、point以外は許可しません。最も簡単な方法は、jquery.validate.min.js(またはそれ以上)を変更するか、cshtml内のカスタムバリデーターをオーバーライドすることです。jquery内では次のようになります。

// http://docs.jquery.com/Plugins/Validation/Methods/number
number: function(value, element) {
    //return this.optional(element) || /^-?(?:\d+|\d{1,3}(?:,\d{3})+)(?:\.\d+)?$/.test(value); <-- original 
    return this.optional(element) || /^-?(?:\d+|\d{1,3}(?:,\d{3})+)(?:[\.,]\d+)?$/.test(value); 
},
于 2012-09-07T08:38:11.990 に答える