私の目標は、ユーザーの文化に応じて、クライアント側でユーザー入力を検証することです。
次の構造を持つプリミティブ データ モデルがあります。
public class User
{
public int UserId { get; set; }
[Required]
[StringLength(20,MinimumLength=3)]
public string Name { get; set; }
[Required]
public double Height { get; set; }
}
さらに、クライアント側の検証を有効にして、有効な数値かどうかを確認したいと考えています。したがって、<head>
_Layout.cshtml のセクションに次の行を追加しました。
<script src="@Url.Content("~/Scripts/jQuery-1.4.2.min.js")" type="text/javascript"></script>
<script src="@Url.Content("~/Scripts/jquery.validate.min.js")" type="text/javascript"></script>
<script src="@Url.Content("~/Scripts/jquery.validate.unobtrusive.min.js")" type="text/javascript"></script>
別の言語形式で入力を検証する機能が必要なので (この特定のコンテキストでは、10 進数形式のドイツ語ですが0,75
、米国ではそうです0.75
)、次の行を追加しました ( jQuery Globalization PlugIn ) AFTER前述のjquery.validate.min.js
とjquery.validate.unobtrusive.min.js
.
<script src="@Url.Content("~/Scripts/jquery.glob.js")" type="text/javascript"></script>
<script src="@Url.Content("~/Scripts/globinfo/jquery.glob.de-de.js")" type="text/javascript"></script>
<script type="text/javascript">
$(document).ready(function () {
$.culture = jQuery.cultures['de-DE'];
$.preferCulture($.culture.name);
});
</script>
さらに、ドイツのカルチャが常に選択されるようにするためweb.config
に、セクションに次の行を追加しました。system.web
<globalization culture="de-DE" uiCulture="de-DE" />
現在、次の動作が発生しています。
0,1
"Height" の値をテキスト ボックスに入力すると(ドイツ語のスペルに注意してください)、検証エラー メッセージThe field Height must be a number
が表示され、フォームを送信できません。- (English 'spelling') と入力
0.1
すると、フォームを送信できますが、サーバー側の検証で次の検証エラー メッセージが返されます。The value '0.1' is not valid for Height.
だから今、私は抜け出すことができないある種の行き詰まりに陥っています。
繰り返しますが、私の目標は、ユーザーの文化に基づいて、クライアント側とサーバー側で 10 進数の入力を検証することです (この場合はドイツ語にする必要があります)。私は何を間違っていますか?
どんな助けでも大歓迎です!前もって感謝します!