gpt4 book ai didi

c# - 自定义不显眼的日期验证器

转载 作者:太空宇宙 更新时间:2023-11-03 11:32:54 26 4
gpt4 key购买 nike

也许这就是我的思维方式,但我很难理解您应该如何执行自定义的不引人注目的验证程序。 C# 部分很简单,但 jqueryui 适配器是我迷路的地方。

我一直在尝试制作一个验证器,它要求日期是过去的某个时间。我用它来进行年龄验证,以确保有人输入了 18 年前的日期。

我最终决定让它成为一个远程验证器,这样验证在客户端和服务器端使用相同的代码。尽管如此,我还是对使用 jquery 来完成这项工作很感兴趣。

我希望数据注释扩展有日期函数。

最佳答案

Brad Wilson's blog article中可以找到很多信息关于使用 asp.net mvc 进行非侵入式验证,包括创建自定义验证器。

基于以下 html(应该是 TextBox 助手的输出)

    <input type="text" name="Age"
data-val="true"
data-val-required="This field is required"
data-val-minage="You should be 18 years or older, go get your parents!"
data-val-minage-value="18" />
<input type="submit"/>

您可以添加以下 javascript 以在客户端验证内容:

    // Extend date with age calculator
Date.prototype.age = function (at) {
var value = new Date(this.getTime());
var age = at.getFullYear() - value.getFullYear();
value = value.setFullYear(at.getFullYear());
if (at < value) --age;
return age;
};

// Add adapter for minimum age validator. Wrap in closure
(function ($) {
$.validator.unobtrusive.adapters.addSingleVal("minage", "value");
} (jQuery));

// Add client side minimum age validator
$.validator.methods.minage = function (value, element, params) {

// If no value is specified, don't validate
if (value.length == 0) {
return true;
}

var dob = new Date(Date.parse(value));

if (dob.age(new Date()) < params || dob == 'Invalid Date') {
return false;
}

return true;
};

年龄计算器的积分归功于 Dave

这里缺少的一件事是全局化,但我认为它超出了问题的范围。顺便说一句,使用 jquery Globalize plugin 很容易实现

希望对你有帮助

关于c# - 自定义不显眼的日期验证器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7210887/

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