我正在尝试验证年龄超过18岁,这是在服务器端验证,但它不在客户端工作,我不知道如何做到这一点。 我看过文章,但它没有用。
我的后端代码是
public class ValidateAge : ValidationAttribute
{
public ValidateAge( params string[] propertyNames)
{
this.PropertyNames = propertyNames;
}
public string[] PropertyNames { get; private set; }
public int MinLength { get; private set; }
protected override ValidationResult IsValid(object value, ValidationContext validationContext)
{
DateTime date = Convert.ToDateTime(value, System.Globalization.CultureInfo.InvariantCulture);
if (DateTime.Compare(date, DateTime.Now.AddYears(-18)) == -1 || DateTime.Compare(date, DateTime.Now.AddYears(-18)) == 0)
{
return ValidationResult.Success;
}
else
{
return new ValidationResult(this.FormatErrorMessage(validationContext.DisplayName));
}
}
}
在模型中是这个
[Required(ErrorMessage="Date of birth is required.")]
[ValidateAge(ErrorMessage="Age must be above 18.")]
[DataType(DataType.Date)]
public DateTime _Dob { get; set; }
它是验证模型但不显示服务器端或客户端的错误消息,我试过
jQuery.validator.unobtrusive.adapters.add but no one explained how to use it
i dont know how to make it work
感谢任何帮助。
答案 0 :(得分:1)
您也可以使用此链接http://www.c-sharpcorner.com/UploadFile/d87001/remote-validation-in-mvc/来使用远程验证。
OR
您可以使用此Javascript功能在按钮单击时进行日期验证。
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;
};
var dob = new Date(Date.parse($(this).text()));
if (dob.age(new Date()) < 18) {
$(this).text("Under 18");
}
else {
$(this).text(" Over 18");
}