gpt4 book ai didi

asp.net-mvc - ASP.NET MVC 3 RC 2 客户端验证与全局化

转载 作者:行者123 更新时间:2023-12-04 02:13:35 25 4
gpt4 key购买 nike

我的目标是根据用户的文化在客户端验证用户输入。

我有一个具有以下结构的原始数据模型:

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.

  • 所以现在我处于某种死锁状态,无法出去。

    同样,我的目标是根据用户的文化(在这种情况下,它被迫是德语)验证客户端和服务器端的十进制数字输入。我究竟做错了什么?

    任何帮助都非常感谢!先感谢您!

    最佳答案

    不幸的是,jQuery.validate.format 和 jQuery.Globalization.format 函数之间存在命名冲突。因此,您必须更改代码才能使用非 jquery 全局化插件。

    我刚刚写了一篇关于它的博客文章 here .

    对你来说,它应该是这样的:

    <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>

    那应该就够了。

    关于asp.net-mvc - ASP.NET MVC 3 RC 2 客户端验证与全局化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4472821/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com