asp.net mvc Проверка аннотации данных - PullRequest
1 голос
/ 23 апреля 2009

Я собираюсь создать некоторую проверку для пользовательского объекта в моем приложении. Но у меня есть некоторые проблемы при попытке создать правило CustomValidation. У моего объекта есть поле - BirthDay - которое не требуется, но если пользователь вводит его, мне нужно проверить его при простой проверке, например, проверка DataType пользователя - DataType.DateTime. Когда я пытаюсь сделать это, у меня появляется ошибка проверки - день рождения требуется. Когда я создаю пользовательскую проверку и всегда возвращаю true, у меня та же ошибка. Ниже несколько строк кода:

[MetadataType(typeof(User.Metadata))]
public class User
{
    #region Metadata        
    private class Metadata
    {
        [Required(ErrorMessage="Name is required")]
        [StringLength(5, ErrorMessage="Max Length is 5")]
        public string Name { get; set; }
        [CustomValidation(typeof(User), "ValidateBirthDay", ErrorMessage="We have trouble.")]
        public DateTime BirthDay { get; set; }

    }
    #endregion

    public static bool ValidateBirthDay(object value)
    {           
        return true;
    }

    public int? ID { get; set; }
    public string Name { get; set; }        
    public DateTime BirthDay { get; set; }
}

p.s. извините за мой английский =)

1 Ответ

4 голосов
/ 23 апреля 2009

Вы должны сделать свою собственность обнуляемой, т.е.

public DateTime? BirthDay { get; set; }

, поэтому он может иметь нулевое значение и не требует установки.

Также способ использования атрибута CustomValidation не выглядит правильным. Я считаю, что вам нужно создать класс, производный от ValidationAttribute базового класса и передавший его тип в первый параметр CustomValidation атрибута.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...