Диапазоны аннотации данных для полей даты и времени Великобритании

Я хочу использовать аннотации к данным для проверки полей DateTime, но у меня возникают проблемы. Согласно документации на MSDN (http://msdn.microsoft.com/en-us/library/system.componentmodel.dataannotations.rangeattribute.aspx) следующее должно работать

[Range(typeof(DateTime), "1/2/2004", "3/4/2004",
    ErrorMessage = "Value for {0} must be between {1} and {2}")]

Однако это отмечает любую введенную мной дату как недействительную!

Сначала я подумал, что это не британские даты (когда я попробовал 26/2/2004), но я даже не могу заставить его использовать даты, такие как 2/2/2004.

Я использую аннотации данных в MVC2 и использую платформу MicrosoftAjax для проверки на стороне клиента.

Какие-либо предложения?

Спасибо


person Alex White    schedule 12.02.2010    source источник


Ответы (2)


Что ж, прошло несколько лет, и я снова обратился к этой же проблеме с MVC4 и могу сказать вам, что она, по-видимому, решена.

Я создал очень простой сайт MVC4 по умолчанию и дал члену даты следующие атрибуты

    [Required]
    [DataType(DataType.Date)]
    [Range(typeof(DateTime), "1/2/2004", "3/4/2004", ErrorMessage = "Value for {0} must be between {1} and {2}")]
    public DateTime BlogDate { get; set; }

Проверка теперь отлично работает в системе данных Великобритании, запрещая дату 01.02.2004, разрешая дату 4/3/2004 или 26/3/2004.

В шаблоне, который я использовал, использовался EF4 с первым кодом, но у меня нет причин подозревать, что он не был исправлен в целом, поскольку javascript тоже работает правильно.

Поэтому, если вы используете MVC2, это все еще может быть проблемой, но лучшее решение, которое я нашел, - использовать MVC4, пока он вам доступен.

person Alex White    schedule 03.09.2013
comment
Какое отношение имеет EF code-first к этому ответу? Эта проверка никогда не приближается к вашему DAL. - person ProfK; 11.02.2017

Насколько я знаю, RangeAttribute может проверять номер только на стороне клиента, вам нужно будет написать собственный валидатор javascript, чтобы это работало ...

посетите http://haacked.com/archive/2009/11/19/aspnetmvc2-custom-validation.aspx, чтобы увидеть пример того, как это сделать.

person moi_meme    schedule 12.02.2010
comment
Моя проблема на данный момент в том, что я не могу заставить его работать на стороне сервера! Клиентская сторона - это то, с чем мне нужно разобраться, когда серверная часть заработает. - person Alex White; 22.02.2010
comment
Что ж, у меня это работает, как вы отображаете свое поле, чтобы ваши атрибуты работали, я думаю, вы должны использовать метод Html.EditorFor или Html.Editor - person moi_meme; 22.02.2010