2015-05-26 15 views
6

Tôi có trường này:Trường phải là số

public decimal Price { get; set; } trong Cơ sở dữ liệu là số thập phân (7,2).

Xem:

@Html.EditorFor(model => model.Price, 
       new { htmlAttributes = new { @class = "form-control" } }) 

Nếu tôi đặt một giá trị với dấu phẩy, MVC xác nhận mặc định không chấp nhận, nói: "The field must be a number". (Tôi đã thử sử dụng một Regex, nhưng không có cách nào)

Ví dụ: 5,00, 55,00 or 555,00

Ngoài này:

public DateTime date { get;set; } 

Xem:

@Html.EditorFor(model => model.Date, 
       new { htmlAttributes = new { @class = "form-control" } }) 

MVC xác nhận mặc định không chấp nhận ngày ở định dạng dd/mm/yyyy, chỉ trong mm/dd/yyyy.

Ví dụ: 13/02/2015, 15/06/2013, 25/08/2012

là một cái gì đó với toàn cầu hóa hoặc những gì? Làm sao tôi có thể giải quyết việc này?

+0

Có hai câu hỏi khác nhau, tốt hơn nên tạo câu hỏi riêng. Đối với định dạng ngày giờ bạn có thể sử dụng cài đặt toàn cầu hóa và cập nhật chuỗi cho bất kỳ nền văn hóa nào bạn muốn. Đối với câu hỏi đầu tiên bạn có thể sử dụng loại dữ liệu tiền thay vì int – Peyman

+0

Bạn có đang chỉ định từ một chuỗi không? Chúng ta có thể thấy mã nơi bạn gán giá trị không? –

+0

Đây thực sự là một vấn đề toàn cầu hóa. Bạn có gặp sự cố với xác thực phía máy khách, phía máy chủ hoặc cả hai không? –

Trả lời

0

Bạn có thể muốn để trang trí lĩnh vực của bạn với các thuộc tính [DisplayFormat] như dưới đây:

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

Không, lỗi tương tự. – developer033

0

Tôi có cùng một vấn đề, tôi đã sử dụng để giải quyết nó với thư viện toàn cầu hóa (globalize.js) nhưng họ đã thay đổi nó để nó không bao gồm các tệp bản địa hóa. Đó là nghĩa vụ để có được chúng từ thư viện cldr, nhưng tôi đã không tìm ra cách.

1

Bạn phải đánh dấu tài sản của mình bằng [DataType(DataType.Currency)].

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

Bạn có thể tìm thấy câu trả lời của bạn ở đây error with decimal in mvc3 - the value is not valid for field, nó không làm việc cho tôi vì vậy tôi sử dụng tạm thời

<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> 

này và tôi tìm thấy điều này ở đây ASP .NET MVC Disable Client Side Validation at Per-Field Level

8

Một giải pháp tôi thấy được để ghi đè các chức năng xác thực của 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

Làm việc như một sự quyến rũ. – Yoshi

Các vấn đề liên quan