2015-05-06 2 views
1

Если у меня есть свойство в модели представления, как:Почему MVC FluentValidation InclusiveBetween всегда вызывает ошибку с помощью DateTime?

[DataType(DataType.DateTime)] 
public DateTime? MyDate{ get; set; } 

и правила проверки, как это:

public class YourDetailsViewModelValidator : AbstractValidator<YourDetailsViewModel> 
{ 
    public YourDetailsViewModelValidator() 
    {   
     RuleFor(x => x.MyDate)     
      .InclusiveBetween(startDate, endDate) 
       .WithMessage("error"); 
    }      
} 

Почему огонь ошибки независимо от того, что дата ввода?

Я видел аналогичную вещь, которая происходила enter link description here, но ответ был в конечном итоге принят, поэтому я надеюсь, что его можно заставить работать правильно.

+0

Вы говорили о сбоях на стороне клиента или на стороне сервера, и вы проверяли привязку значений правильно? –

+0

его на стороне клиента. все это, кажется, связано должным образом. – davy

ответ

0

Ошибка может быть объяснена разницей в форматировании даты плагина jquery.validate и форматировании помощников MVC. Просто посмотрите в HTML, сгенерированного вашим видом, а также использовать

[DisplayFormat(DataFormatString="...")] // format string instead of dots 

сделать data-val-min и data-val-max атрибуты соответствуют формату ввода value (если они, конечно).

Если формат атрибутов значения и валидации один и тот же, но проверка еще не завершена - убедитесь, что jquery.validate имеет соответствующий формат. В этом случае вы должны изменить структуру приложений ASP.NET MVC, чтобы соответствовать формату jquery.validate, или наоборот - изменить формат jquery.validate для соответствия приложению.

Подобные вопросы задают на SO:

First

Second

.NET параметры форматирования даты доступны here.

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