Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
 
30 / 11 / 5
Регистрация: 01.03.2014
Сообщений: 371
1

Валидация полей объекта

24.12.2019, 16:35. Показов 486. Ответов 4
Метки c# (Все метки)

Доброго времени суток, форумчане.

Есть класс:

Produtc.cs
Кликните здесь для просмотра всего текста

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
using System.ComponentModel.DataAnnotations;
 
 public abstract class Product
    {
        private string _productName;
        private double _price;
        private double _price2;
 
                public string ProductName
        {
            get { return _productName; }
            internal set { _productName = value; }
        }
        [Required]
        [Range(1, 1000, ErrorMessage = "Текст сообщения"]
        public double Priсe
        {
            get => this._price;
            internal set
            {
                if ((value >= 1) && (value <= 1000))
                {
                    _price = value;
                }
                else
                {
                    _price = 0;
                }
                this.DiscountPrice = _price;
            }
        }
        public Product(string productName, double price)
        {
            ProductName = productName;
            Priсe = price;
        }
[Required]
        [Range(1, 50, ErrorMessage = "Текст сообщения"]
        public double Priсe2
        {
            get => this._price2;
            internal set
            {
                if ((value >= 1) && (value <= 50))
                {
                    _price2 = value;
                }
                else
                {
                    _price2 = 0;
                }
                this.DiscountPrice = _price;
            }
        }
        public Product(string productName, double price, double price2)
        {
            ProductName = productName;
            Priсe = price;
            Price2 = price2;
        }
}

Как в классе Programm.cs сделать проверку вводимых значений? Т.е. пока я верно не введу значение price, программа не должна мне разрешать вводить значение price2, делая запись, что значение price не попадает в диапазон 1..1000.

В соседней ветке мне подсказали как избавиться от ошибки, если я ввожу вместо double скажем строку:
C#
1
2
3
4
5
6
7
8
9
static double ReadDouble(string prompt)
{
   double result;
   do Console.Write(prompt);
   while (!double.TryParse(Console.ReadLine(), out result));
 
   return result;
}
Предложили проверять, если преобразование из строки в double не происходит, то снова запрашивать значение в бесконечном цикле. А как проверять полученное значение на соответствие атрибутам?
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
24.12.2019, 16:35
Ответы с готовыми решениями:

Изменение полей объекта в методе
Объясните, пожалуйста подробно почему при обычном взятии объекта в качестве аргумента не происходит...

Валидация полей
Нашел нужный мне скрипт, как применить его к id полям value. например к id=&quot;summ2&quot; и id=&quot;summa&quot; ...

Валидация полей
Добрый день. Такой вопрос. Сделал валидацию полей, но валидация работает только при добавлении...

Валидация Read Only Полей
Может кто вкурсе как можно сделать валидацию ридонли полей в икспейдж. Данные поля заполняю с...

__________________

Записывайтесь на профессиональные курсы С#-разработчиков‌
4
1822 / 1166 / 499
Регистрация: 14.10.2018
Сообщений: 3,177
24.12.2019, 16:50 2
holod2014, с атрибутами к сожалению не знаком, если без них то можно и так, может поможет вам
C#
1
2
3
4
5
        double result;
        do
        {
            double.TryParse(Console.ReadLine(), out result);
        } while (result <= 1 || result >= 1000);
0
30 / 11 / 5
Регистрация: 01.03.2014
Сообщений: 371
24.12.2019, 19:17  [ТС] 3
Как-то не хорошо дублировать код проверки.
Созрела такая мысль: создать объект класса Product со значениями по умолчанию, а потом переопределять каждое поле объекта введёнными с клавиатуры значениями. Не знаю на сколько это будет правильно. Может ещё какие у кого мысли есть?
0
1822 / 1166 / 499
Регистрация: 14.10.2018
Сообщений: 3,177
24.12.2019, 19:27 4
Цитата Сообщение от holod2014 Посмотреть сообщение
Как-то не хорошо дублировать код проверки
вы имеете ввиду проверки в цикле do-while и в свойствах, или несколько циклов прописывать (только разные значения)?
0
30 / 11 / 5
Регистрация: 01.03.2014
Сообщений: 371
24.12.2019, 19:31  [ТС] 5
да, я про проверку в свойствах и в классе Program
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
24.12.2019, 19:31

Заказываю контрольные, курсовые, дипломные работы и диссертации здесь.

Валидация полей формы
Форма регистрации имеет четыре поля: фамилия, имя, email и пароль. Данные записываются в базу...

Валидация полей формы
Вечер добрый, требуется помощь. Ниже код, с простой валидацией полей формы, где кнопка &quot;submit&quot;...

Валидация полей в форме
Доброго времени суток. Взял готовую систему авторизации, но при нажатии кнопки &quot;Login&quot; ничего не...

Валидация несольких полей
Доброго времени суток! У меня такая проблема... есть несколько полей на странице, которые я...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.