我的目标是根据用户的文化在客户端验证用户输入。
我有一个具有以下结构的原始数据模型:
public class User
{
public int UserId { get; set; }
[Required]
[StringLength(20,MinimumLength=3)]
public string Name { get; set; }
[Required]
public double Height { get; set; }
}
此外,我想启用客户端验证,检查它是否是有效数字。因此,我在<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>
由于我希望能够以另一种语言格式验证输入(在这个特定的上下文中,它是德语,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>
此外,我web.config
在该system.web
部分中添加了以下行,以确保始终选择德国文化:
<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.
所以现在我陷入了某种死锁,我无法脱身。
同样,我的目标是根据用户的文化验证客户端和服务器端输入的十进制数字(在这种情况下,它被强制为德语)。我究竟做错了什么?
非常感谢任何帮助!先感谢您!