Расширение RangeAttribute в MVC 2 (пространство имен DataAnnotations), чтобы иметь переменный диапазон дат, основанный на сегодняшней дате - PullRequest
1 голос
/ 18 августа 2010

Кто-нибудь расширил атрибут Range, чтобы иметь возможность иметь переменный диапазон?

У меня есть аналогичная потребность, но я не могу сделать эту работу:

public class YearRangeAttribute : RangeAttribute
    {
        public YearRangeAttribute()
            : base(typeof(DateTime), DateTime.Now.AddYears(-100).Year.ToString(), DateTime.Now.AddYears(-14).Year.ToString()) { }

    }

Нет ничегона странице, когда он отображается в браузере.

Есть идеи?

TIA

Ответы [ 2 ]

2 голосов
/ 07 сентября 2010
# public class YearRangeAttribute : RangeAttribute  
#    {  
#          
#   
#   
#        public YearRangeAttribute()  
#           : base(DateTime.Now.AddYears(-100).Year, DateTime.Now.AddYears(-16).Year) { }  
#                 
#          
#              
#    }

и на Global.asax.cs:

   DataAnnotationsModelValidatorProvider.RegisterAdapter(typeof(YearRangeAttribute), typeof(RangeAttributeAdapter));  

Приветствия

Лизет

1 голос
/ 21 октября 2015

Вот рабочий пример:

public class PermittedYearRangeAttribute : RangeAttribute
{
    public PermittedYearRangeAttribute()
        : base(1900, DateTime.Now.AddYears(-50).Year)
    {
        ErrorMessage = string.Format("Year must be between 1900 and {0}", DateTime.Now.AddYears(-50).Year);
    }
}

В Global.asax.cs Application_Start() метод добавить следующую строку

DataAnnotationsModelValidatorProvider.RegisterAdapter(typeof(PermittedYearRangeAttribute), typeof(RangeAttributeAdapter));

В свойстве Model Decorate:

[Required(ErrorMessage = "Please enter year")]
[PermittedYearRange]
public int Year { get; set; }

HTML предоставлено:

 <input class="tooltip form-control input dob--input input-validation-error" data-val="true" data-val-number="The field Year must be a number." data-val-range="Year must be between 1900 and 1965" data-val-range-max="1965" data-val-range-min="1900" data-val-required="Please enter year" id="Year" maxlength="4096" name="Year" placeholder="YYYY" tabindex="" type="text" value="0">
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...