none
Не работаю методы внутри public class мойклассAttribute : ValidationAttribute RRS feed

  • Вопрос

  • Добрый день, 
    У меня сгенерированная Entity модель, я хочу определить атрибут для свойства и проверить через какой-нибудь метод класса, но срабатывает только конструктор класса

    public class MyVerefiLoginAttribute : ValidationAttribute
        {
            public MyVerefiLoginAttribute()
            {
    // по дебагу есть точка входа в конструкторе
            }
    
            public override bool IsValid(object value)
            {
                return base.IsValid(value);
            }
        }
    Модель
    public partial class User
        {
            public User()
            {
                this.MedCards = new HashSet<MedCard>();
            }
            public int Id { get; set; }
            public string firsеName { get; set; }
            public string lastName { get; set; }
            public Nullable<System.DateTime> dateBirth { get; set; }
            [Required(ErrorMessage = "Поле статус не было заполнено", AllowEmptyStrings = false)]
            public string status { get; set; }
    
           
            [MyVerefiLogin(ErrorMessage = "Логин существует")]
            public string login { get; set; }
    .......


    4 марта 2015 г. 7:01

Все ответы

  • HelpHelpHelpHelpHelpHelpHelpHelpHelpHelpHelpHelpHelpHelp

    public class MyVerefiLoginAttribute : ValidationAttribute
        {
       

    У меня подозрение что класс находится в /Areas/......
    а модель /ModelDBEntity.edmx/ModelDBEntity.tt/User.cs
    и как-то методы не видятся  = /


    • Изменено A1x1On 4 марта 2015 г. 13:30
    4 марта 2015 г. 13:30
  • А как вы пытаетесь проверить? Может метод попросту не вызывается.

    Сделаем содержимое сообщества лучше, вместе!

    4 марта 2015 г. 13:47
    Модератор
  • Да, он не вызывается, в resharper'e метод потухший в классе хотя в инталесенсе все виртуальные методы появляются. Проверял только так через атрибут свойства
    4 марта 2015 г. 13:50
  • Это не факт, что он не вызывается. Он может быть вызван полиморфно или через рефлексию. Т.е. проверить факт вызова можно только в Runtime (т.е. во время выполнения программы), например отлаживая проект.

    Сделаем содержимое сообщества лучше, вместе!

    4 марта 2015 г. 13:53
    Модератор
  • У меня текстовое свойство, при попытке ввода должен вызываться метод. Break point на методе не срабатывает, пробовал. Конечно подключена проверка на стороне клиента @Scripts.Render("~/bundles/jqueryval") и остальные свойства проверяются
    4 марта 2015 г. 14:00
  • Вообще то нет, он должен вызываться когда страница отправляется на сервер, происходит POST запрос. Если включена клиентская валидация, то при вводе только срабатывает клиентский скрипт. А серверный работает уже после отправки.

    Сделаем содержимое сообщества лучше, вместе!

    4 марта 2015 г. 14:06
    Модератор
  • Совсем никак не хочет, при загрузки проекта срабатывает только конструктор класса, ни по POST ни через js метод не вызывается(
    4 марта 2015 г. 14:25
  • Посмотрите данный пост, у вас случаем не тоже самое происходит.

    Сделаем содержимое сообщества лучше, вместе!

    5 марта 2015 г. 6:28
    Модератор
  • не, эт врятли. Я заметил если когда я убираю сроку бандла @Scripts.Render("~/bundles/jqueryval") на странице формы, то через POST запрос метод прекрасно срабатывает и свойство проверяется, а по средством проверки JS вообще никак не проверяет его, хотя остальные свойства проверяются на ура хоть js хоть post. Но мне как раз необходимо проверять все свойства на стороне клиента. Как же быть, что-то пользовательский атрибут не понимает js = (
    5 марта 2015 г. 7:50
  • У кого какие догадки?
    6 марта 2015 г. 6:50