2015-10-09 2 views
0

Я пытаюсь проверить возраст до 18 лет, это работает на проверке на стороне сервера, но он не работает на стороне клиента, и я понятия не имею, как это сделать. Я видел статьи, но это не сработало.Клиентская сторона custom Validation for date range в mvc4

  1. i реализована логика на стороне сервера C#.
  2. Мне нужно реализовать такую ​​же логику на стороне клиента jQuery/JavaScript.

мой фоновым код

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

Вы должны использовать дистанционную проверку. –

+0

Можете ли вы сказать мне, как это работает? –

+0

вы также можете использовать функцию jqury. Эта ссылка для удаленной проверки [http://www.c-sharpcorner.com/UploadFile/d87001/remote-validation-in-mvc/](http://www.c-sharpcorner. ком/UploadFile/d87001/дистанционного валидация-в-MVC /). –

ответ

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"); 
} 
+0

Я использовал удаленную проверку и вызвал действие с помощью ajax на событие размывания текстового поля, и он работал так, как он должен работать. Ответ выше имел некоторые ошибки, и у меня было трудное время, делая логику в javascript, поэтому я не пошел дальше. проблема включена , сравнивая дату и дату получения от дня, месяца и года, то это может быть проблема локализации/формата. –

Смежные вопросы