2010-12-29 14 views
5

Tôi đang sử dụng jquery để xác thực phía khách hàng cùng với chú thích dữ liệu. Mọi thứ đều hoạt động tốt nhưng tôi muốn bản địa hóa một tin nhắn khi một giá trị không phải là số được nhập vào hộp văn bản số. Nhưng đối với phía khách hàng xác thực asp.net MVC đang sử dụng tập tin tài nguyên riêng của mình với khóa 'ClientDataTypeModelValidatorProvider_FieldMustBeNumeric'."Độ rộng trường phải là một số." ở phía khách hàng

Tôi làm cách nào?

Cảm ơn.

+0

thể trùng lặp của [xác nhận MVC asp.net phải là một lỗi số tùy chỉnh] (http://stackoverflow.com/questions/ 4521254/asp-net-mvc-validation-phải-be-a-number-custom-error) –

Trả lời

2

Hãy tìm giải pháp ở phần cuối của trang này:

http://jwwishart.wordpress.com/2010/03/22/custom-server-and-client-side-required-validator-in-mvc-2-using-jquery-validate/

Tôi đã kiểm tra này trong dự án RTM MVC 3 của tôi và nó hoạt động tốt.

+0

Tôi đã thực hiện những gì Justin Wishart đã viết trong liên kết ở trên về ClientDataTypeModelValidatorProvider. Tôi đã sử dụng Reflector để lấy mã lớp ban đầu và chỉ mã mới vào tài nguyên Bản địa hóa của tôi. Nó hoạt động hoàn hảo trong ASP.NET MVC 3. –

2

Tôi đã có cùng một vấn đề vì tôi là người Ý và ở đây số thập phân được định dạng bằng dấu phẩy thay vì dấu chấm. Vì vậy, những gì ở Mỹ là 1.000,12 ở đây được viết 1.000,12. Đó là cách tôi giải quyết, sau khi tìm kiếm: MVC3 đã bao gồm tập lệnh jquery.validate.js/jquery.validate.min.js và điều đó thật tuyệt vời.

Sau đó, tôi đã thêm một tập lệnh khác - phương thức-it.js - lấy từ jquery xác thực thư mục bản địa hóa plugin và thay đổi một chút.

jQuery.extend(jQuery.validator.methods, { 
    date: function (value, element) { 
     return this.optional(element) || /^\d\d?\.\d\d?\.\d\d\d?\d?$/.test(value); 
    }, 
    number: function (value, element) { 
     return this.optional(element) || /^-?(?:\d+|\d{1,3}(?:\.\d{3})+)(?:,\d+)?$/.test(value); 
    }, 
    range: function (value, element, param) { 
     var val = value.replace(",", "#").replace(".", ",").replace("#", "."); 
     return this.optional(element) || (val >= param[0] && val <= param[1]); 
    } 
}); 

Mã nhỏ này đề cập đến ngày (định dạng Ý), số nổi và phạm vi giá trị. Nó hoạt động tuyệt vời, ngay bây giờ! Thật không may đây chỉ là một hướng và không phải là giải pháp, bởi vì nó phải được sửa chữa cho mọi miền địa phương.

+0

jQuery.validator là không xác định những gì tôi đang thiếu? –

+0

Lỗi thời gian chạy Microsoft JScript: Không thể nhận giá trị của thuộc tính 'phương thức': đối tượng là null hoặc không xác định. Tui bỏ lỡ điều gì vậy? – Jorre

0

tôi tìm thấy nó dễ dàng hơn để chỉ cần sử dụng DataAnnotations trên mô hình điểm:

[RegularExpression("([0-9]+)", ErrorMessageResourceType = typeof(ErrorMessage), ErrorMessageResourceName = "NumberInvalid")] 
Các vấn đề liên quan