私はこのフィールドを持っています:
データベースのpublic decimal Price { get; set; }
は10進数(7,2)です。
見る:
@Html.EditorFor(model => model.Price,
new { htmlAttributes = new { @class = "form-control" } })
値をコンマで入力すると、MVCのデフォルトの検証が受け入れられなくなります:"The field must be a number"
。 (私は正規表現を使用しようとしましたが、方法はありません)
例:5,00, 55,00 or 555,00
これも:
public DateTime date { get;set; }
見る:
@Html.EditorFor(model => model.Date,
new { htmlAttributes = new { @class = "form-control" } })
MVCのデフォルトの検証では、dd/mm/yyyy
の形式でのみmm/dd/yyyy
の形式の日付を受け入れません。
例:13/02/2015, 15/06/2013, 25/08/2012
グローバリゼーションとは何か?どうすればこれを解決できますか?
私が見つけた1つの解決策は、jquery.validate.js
の検証関数をオーバーライドすることでした
<script>
$.validator.methods.range = function (value, element, param) {
var globalizedValue = value.replace(",", ".");
return this.optional(element) || (globalizedValue >= param[0] && globalizedValue <= param[1]);
}
$.validator.methods.number = function (value, element) {
return this.optional(element) || /-?(?:\d+|\d{1,3}(?:[\s\.,]\d{3})+)(?:[\.,]\d+)?$/.test(value);
}
//Date dd/MM/yyyy
$.validator.methods.date = function (value, element) {
var date = value.split("/");
return this.optional(element) || !/Invalid|NaN/.test(new Date(date[2], date[1], date[0]).toString());
}
</script>
あなたはここであなたの答えを見つけるかもしれません mvc3の10進数のエラー-値はフィールドには無効です 、私にはうまくいきませんでしたので、この一時的なものを使用しました
<div class="col-md-10">
@{ Html.EnableClientValidation(false); }
@Html.EditorFor(model => model.DecimalValue, new { htmlAttributes = new { @class = "form-control" } })
@{ Html.EnableClientValidation(true); }
@Html.ValidationMessageFor(model => model.DecimalValue, "", new { @class = "text-danger" })
</div>
そして私はこれをここで見つけます ASP .NET MVC Disable Client Side Validation at-Field Level
私は同じ問題を抱えていますが、以前はグローバリゼーションライブラリ(globalize.js)で解決していましたが、ローカリゼーションファイルが含まれないように変更しました。 cldrライブラリからそれらを取得することになっていますが、方法はわかりません。
プロパティを[DataType(DataType.Currency)]
でマークする必要があります。
[DataType(DataType.Currency)]
public decimal Price { get;set;}
以下のように[DisplayFormat]
属性を使用してフィールドを装飾することができます。
[DisplayFormat(DataFormatString = "{0:N}", ApplyFormatInEditMode = true)]
public decimal Price { get; set; }