jQuery.validator.unobtrusive.adapters .addMinMax туда и обратно, не работает в MVC3

Я создаю валидатор дневного диапазона, используя DataAnnotations, jQuery.validate и jquery.validate.unobtrusive. Я уже читал следующее: http://bradwilson.typepad.com/blog/2010/10/mvc3-unobtrusive-validation.html

http://weblogs.asp.net/mikaelsoderstrom/archive/2010/10/06/unobtrusive -validation-in-asp-net-mvc-3.aspx

и другие, но не могут опубликовать их (noob)

Как и большинство сообщений на SO. Я упираюсь головой в стену, любая помощь может быть вознаграждена пивом / едой / кодом / и т. Д .;) В любом случае вот код:

У меня есть объект модели со следующим параметром:

[Display(Name = "Start date"), 
 DayRange(0, 5, ErrorMessage = "The Start Date must be between today and 5 days time.")]
public DateTime StartDate { get; set; }

DayRange - это настраиваемый класс атрибута:

[AttributeUsage(AttributeTargets.Field | AttributeTargets.Property, AllowMultiple = false, Inherited = true)]
public class DayRangeAttribute : RangeAttribute, IClientValidatable
{
    private int _minimumDays;
    private int _maximumDays;

    public DayRangeAttribute(int minimumDays, int maximumDays) : base(minimumDays, maximumDays) 
    {
        _minimumDays = minimumDays;
        _maximumDays = maximumDays;
    }

    public override bool IsValid(object value)
    {
        var dateToBeTested = value as DateTime?;
        return dateToBeTested.HasValue && dateToBeTested.Value >= DateTime.Today.AddDays(_minimumDays) && dateToBeTested.Value <= DateTime.Today.AddDays(_maximumDays);
    }

    public IEnumerable GetClientValidationRules(ModelMetadata metadata, ControllerContext context)
    {
        var rule = new ModelClientValidationRule
                         {
                             ErrorMessage = this.ErrorMessage,
                             ValidationType = "dayrange"
                         };
        rule.ValidationParameters.Add("min", _minimumDays);
        rule.ValidationParameters.Add("max", _maximumDays);
        yield return rule;
    }
}

У меня в web.config есть следующее:


    
    

У меня есть следующий триггер JS до того, как документ будет готов (пытался запустить его, когда документ будет готов):

jQuery.validator.addMethod('dayrange', function (value, element, param) {
    if (!value) return false;
    var now = Date();
    var dateValue = Date.parse(value);
    var minDate = now.setDate(now.getDate() - param.min);
    var maxDate = now.setDate(now.getDate() + param.max);

    return this.optional(element) && dateValue >= minDate && dateValue <= maxDate;
}, 'Must fall in range');

jQuery.validator.unobtrusive.adapters.addMinMax('dayrange', 'minlength', 'maxlength', 'dayrange');

Что я делаю неправильно? Заранее спасибо, Jol

7
задан jolySoft 2 June 2011 в 15:58
поделиться