sde*_*sde 11 asp.net-mvc asp.net-mvc-3 jquery-globalization
我的目标是根据用户的文化验证客户端的用户输入.
我有一个原始数据模型,具有以下结构:
public class User
{
public int UserId { get; set; }
[Required]
[StringLength(20,MinimumLength=3)]
public string Name { get; set; }
[Required]
public double Height { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
此外,我想启用客户端验证,检查它是否是有效数字.因此,我在<head>_Layout.cshtml 的部分添加了以下行.
<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>
Run Code Online (Sandbox Code Playgroud)
由于我希望能够以另一种语言格式验证输入(在这个特定的上下文中,它的德语是十进制数字格式,0,75而在美国它将是0.75),我添加了以下行(jQuery Globalization PlugIn)AFTER前面提到的jquery.validate.min.js和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>
Run Code Online (Sandbox Code Playgroud)
另外,为了确保始终选择德国文化,我web.config在该system.web部分添加了以下行:
<globalization culture="de-DE" uiCulture="de-DE" />
Run Code Online (Sandbox Code Playgroud)
现在我遇到以下行为:
0,1在文本框中的"高度"的值(注意德国的"拼写"),验证错误消息The field Height must be a number出现,我不能提交表单.0.1(英文'拼写'),我可以提交表单,但服务器端验证返回以下验证错误消息The value '0.1' is not valid for Height.所以现在我处于某种死锁状态,我无法离开.
同样,我的目标是根据用户的文化验证客户端和服务器端的十进制数输入(在这种情况下,它被强制为德语).我究竟做错了什么?
任何帮助都非常感谢!先感谢您!
不幸的是,jQuery.validate.format和jQuery.Globalization.format函数之间存在命名冲突.因此,您必须更改代码才能使用非jquery Globalization插件.
我刚刚在这里写了一篇关于它的博客文章.
对你来说它应该是这样的:
<script src="@Url.Content("~/Scripts/globalization.js")" type="text/javascript"></script>
<script src="@Url.Content("~/Scripts/globinfo/Globalization.de-DE.js")" type="text/javascript"></script>
<script type="text/javascript">
$.validator.methods.number = function (value, element) {
if (!isNaN(Globalization.parseFloat(value))) {
return true;
}
return false;
}
$(document).ready(function () {
$.culture = jQuery.cultures['de-DE'];
$.preferCulture($.culture.name);
Globalization.preferCulture($.culture.name);
});
</script>
Run Code Online (Sandbox Code Playgroud)
那应该够了.
| 归档时间: |
|
| 查看次数: |
6908 次 |
| 最近记录: |