我正在使用不引人注目的验证来开发本地化的 mvc3 Web 应用程序。
在 web.config 中我有:
<globalization culture="pl-PL" uiCulture="pl" />
使用的是jquery 1.4.4和jqueryvalidation 1.6。
问题在于十进制数字分隔符。
我可以看到 jquery 验证忽略了区域性,并期望点字符始终是小数点分隔符。我需要用逗号代替。例如,我认为德语也是如此。
我创建了自己的methods_pl.js 文件:
jQuery.extend(jQuery.validator.methods, {
number: function(value, element) {
return this.optional(element) || /^-?(?:\d+|\d{1,3}(?:\.\d{3})+)(?:,\d+)?$/.test(value);
}
});
以上就是解决根本不识别小数的基本问题。
但是当我尝试在模型 Decimal Price 属性上使用 RangeAttribute 时,它仍然不起作用。
怎么解决这个问题呢?
如果你设置
key="UnobtrusiveJavaScriptEnabled" value="false"
the DecimalModelBinder
上一个答案中发布的内容将起作用,但您将禁用客户端验证。
要解决您的问题,您需要包含正确的 jQuery 区域设置。
看一个斯科特·汉塞尔曼的这篇文章 http://www.hanselman.com/blog/GlobalizationInternationalizationAndLocalizationInASPNETMVC3JavaScriptAndJQueryPart1.aspx or 这个帖子 http://blogs.msdn.com/b/rickandy/archive/2011/02/17/using-mvc-3-with-non-english-locales.aspx他们应该在实施过程中为您提供一些帮助。
您应该从 NuGet 添加 Jquery.globalize 插件,然后在 DOMready 函数中添加类似的内容以正确验证数字(至少它对我有用)
$.validator.methods.number = function (value, element) {
if (Globalize.parseFloat(value))
return true;
return false;
}
Globalize.culture('fr-FR');
然后在页面中添加相关脚本
<script src="@Url.Content("~/Scripts/jquery-1.7.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>
<script src="@Url.Content("~/Scripts/jquery.globalize/globalize.js")" type="text/javascript"></script>
<script src="@Url.Content("~/Scripts/jquery.globalize/cultures/globalize.culture.fr-FR.js")" type="text/javascript"></script>
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)