2015-05-26 140 views
6

我有這樣的領域:字段必須是數字

public decimal Price { get; set; }在數據庫是十進制(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

是一些與全球化還是什麼?我該如何解決這個問題?

+0

有兩個不同的問題,最好是創建單獨的問題。對於日期時間格式,您可以使用全球化設置並將線索更新爲您需要的任何文化。對於第一個問題,您可以使用Money數據類型而不是int – Peyman

+0

您是從字符串中分配的嗎?我們可以看到您分配值的代碼嗎? –

+0

這確實是一個全球化問題。您是否遇到客戶端驗證,服務器端或兩者的問題? –

回答

0

您可能希望與[DisplayFormat]屬性爲波紋管來裝飾你的領域:

[DisplayFormat(DataFormatString = "{0:N}", ApplyFormatInEditMode = true)] 
public decimal Price { get; set; } 
+3

不,同樣的錯誤。 – developer033

0

我有同樣的問題,我用全球化庫(globalize.js)來解決這個問題,但他們改變了它如此它不包含本地化文件。它應該從cldr庫中獲取它們,但我還沒有弄清楚它是如何實現的。

1

你必須用[DataType(DataType.Currency)]來標記你的財產。

[DataType(DataType.Currency)] 
public decimal Price { get;set;} 
0

你可以在這裏找到答案error with decimal in mvc3 - the value is not valid for field,它並沒有爲我工作,所以我用這個臨時

<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 Per-Field Level

8

一個解決方案,我發現是覆蓋驗證功能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> 
+1

工程就像一個魅力。 – Yoshi

相關問題