Mục tiêu của tôi là xác thực đầu vào của người dùng ở phía máy khách, tùy thuộc vào văn hóa của người dùng.ASP.NET MVC 3 RC 2 xác thực phía khách hàng với toàn cầu hóa
Tôi có một mô hình dữ liệu nguyên thủy với cấu trúc sau:
public class User
{
public int UserId { get; set; }
[Required]
[StringLength(20,MinimumLength=3)]
public string Name { get; set; }
[Required]
public double Height { get; set; }
}
Hơn nữa, tôi muốn có xác nhận client-side được kích hoạt, kiểm tra nếu nó là một số hợp lệ. Do đó, tôi đã thêm các dòng sau vào phần <head>
của _Layout.cshtml của tôi.
<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>
Vì tôi muốn có khả năng để xác nhận đầu vào trong các định dạng ngôn ngữ khác (trong bối cảnh đặc biệt này đó là Đức với định dạng số thập phân của 0,75
trong khi ở Mỹ nó sẽ là 0.75
), tôi đã thêm các dòng sau (jQuery Globalization PlugIn) SAU được đề cập trước đây jquery.validate.min.js
và 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>
Ngoài ra, tôi đã thêm các dòng sau vào web.config
trong phần system.web
chỉ để chắc chắn rằng nền văn hóa Đức luôn được chọn:
<globalization culture="de-DE" uiCulture="de-DE" />
Bây giờ tôi đang trải qua những hành vi sau đây :
- Nếu tôi nhập
0,1
(lưu ý chính tả của Đức ') trong hộp văn bản cho giá trị "Chiều cao", thông báo lỗi xác thựcThe field Height must be a number
xuất hiện và tôi không thể gửi biểu mẫu. - Nếu tôi gõ vào
0.1
(tiếng Anh 'chính tả'), tôi có thể gửi biểu mẫu nhưng validation server-side trả về thông báo lỗi xác nhận sauThe value '0.1' is not valid for Height.
Vì vậy, bây giờ tôi đang ở một số loại khóa chết nơi Tôi không thể ra ngoài.
Một lần nữa, mục tiêu của tôi là xác thực số đầu vào thập phân trên phía máy khách và phía máy chủ, dựa trên văn hóa của người dùng (trong trường hợp này buộc phải là tiếng Đức). Tôi đang làm gì sai?
Mọi trợ giúp đều được đánh giá cao! Cảm ơn bạn trước!
'if' của bạn xác định sai' 0' dưới dạng giá trị không hợp lệ; sử dụng 'return! isNaN (Globalization.parseFloat (value));' là phần thân của hàm. –
Bạn có thông báo cho người tạo plugin không? Bạn vui lòng làm như vậy nếu chưa được thực hiện. Tôi đang gặp vấn đề tương tự như sde nhưng tôi không muốn "hack" với các phương thức không chính thức hoặc ghi đè. – toebens
Vâng, chỉ cần tiết kiệm cho tôi một tấn mã đào - bạn là một ngôi sao, cảm ơn rất nhiều cho bài đăng blog và chia sẻ trên SO! – Dav