【发布时间】:2010-12-17 16:51:19
【问题描述】:
我的目标是根据用户的文化在客户端验证用户输入。
我有一个具有以下结构的原始数据模型:
public class User
{
public int UserId { get; set; }
[Required]
[StringLength(20,MinimumLength=3)]
public string Name { get; set; }
[Required]
public double Height { get; set; }
}
此外,我想启用客户端验证,检查它是否是有效数字。因此,我在 _Layout.cshtml 的 <head> 部分添加了以下几行。
<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>
由于我希望能够以其他语言格式验证输入(在此特定上下文中,它是德语,十进制数格式为 0,75,而在美国则为 0.75),我添加了以下行 (jQuery Globalization PlugIn) 在前面提到的 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>
此外,我在system.web 部分的web.config 中添加了以下行,以确保始终选择德国文化:
<globalization culture="de-DE" uiCulture="de-DE" />
现在我遇到以下行为:
- 如果我在文本框中输入
0,1(注意德语“拼写”)作为“高度”的值,则会出现验证错误消息The field Height must be a number,并且我无法提交表单。李> - 如果我输入
0.1(英文“拼写”),我可以提交表单,但服务器端验证返回以下验证错误消息The value '0.1' is not valid for Height.
所以现在我陷入了某种无法摆脱的死锁。
同样,我的目标是根据用户的文化验证客户端和服务器端输入的十进制数字(在这种情况下,它被强制为德语)。我做错了什么?
非常感谢任何帮助!提前谢谢!
【问题讨论】:
标签: asp.net-mvc asp.net-mvc-3 jquery-globalization