Ответы пользователя по тегу C#
  • Как отловить ошибку в Mappere?

    Planet_93
    @Planet_93
    В Select вы проходите по элементам массива.
    Вы можете в блок Select добавить блок Try/Catch.

    var vals = new List<int> { 1, 2, 3, 4, 5, 6, 0,11 };
    var res = vals.Select(e => 
      {
        try
        {
          return (e => 2000/e));
        }
        catch(Exception)
        {
          return 0;
        }
      });


    Другие варианты решения можете посмотреть здесь.

    Хотя в вашем примере будет достаточно проверить деление на ноль.
    var vals = new List<int> { 1, 2, 3, 4, 5, 6, 0, 11 };
    var res = vals.Select(e => e == 0 ? 0 : 2000 / e);
    Ответ написан
  • Как создать модальное окно asp.net mvc?

    Planet_93
    @Planet_93
    Пример вы взяли видимо отсюда https://getbootstrap.com/docs/4.0/components/modal/

    Посмотрите первый абзац Getting started

    Проверьте что вы подключили не только файл стилей bootstrap.min.css, но и файлы js - jquery-3.2.1.slim.min.js, bootstrap.min.js.
    Ответ написан
    2 комментария
  • В чем ошибка проверки на уровень сложности пароля?

    Planet_93
    @Planet_93
    У вас некорректная логика проверок. В данном случае, когда пароль соответствует 4 уровню, то он всё равно покажет 2 уровень, так как у вас стоит return. То есть return, при любом раскладе закончит выполнение метода после 2 уровня, хотя пароль и соответствует 3 или 4 уровню.
    У вас есть два варианта, либо поменять уровни местами, то есть сначала проверять на соответствие 4 уровню, потом 3 уровню и так до первого, с return при проверки каждого уровня.
    Либо вынести return из под каждого if и оставить один единственный в конце метода.

    Второй вариант:

    var password = ValuePass.Text;
                var regex = new Regex(@"([a - z])");
                var regex2 = new Regex(@"([a-zA-Z])");
                var regex1 = new Regex(@"([0 - 9])");
                var regex3 = new Regex(@"([!,@,#,$,%,^,&,*,?,_,~])");
                if (password.Length >= 8 && regex1.IsMatch(password) && regex2.IsMatch(password) && regex3.IsMatch(password))
                {
                    resultValue.Text = "4 уровень";
                    return;
                }
                if (password.Length >= 8 &&  regex1.IsMatch(password) && regex2.IsMatch(password))
                {
                    resultValue.Text = "3 уровень";
                    return;
                }
                if (password.Length >= 8 && regex2.IsMatch(password))
                {
                    resultValue.Text = "2 уровень";
                    return;
                }
                if (password.Length < 8 && regex.IsMatch(password))
                {
                    resultValue.Text = "1 уровень";
                    return;
                }


    Первый вариант:

    var password = ValuePass.Text;
                var regex = new Regex(@"([a - z])");
                if (password.Length < 8 && regex.IsMatch(password))
                {
                    resultValue.Text = "1 уровень";
                }
    
                var regex2 = new Regex(@"([a-zA-Z])");
                if (password.Length >= 8 && regex2.IsMatch(password))
                {
                    resultValue.Text = "2 уровень";
                }
    
                var regex1 = new Regex(@"([0 - 9])");
                if (password.Length >= 8 &&  regex1.IsMatch(password) && regex2.IsMatch(password))
                {
                    resultValue.Text = "3 уровень";
                }
    
                var regex3 = new Regex(@"([!,@,#,$,%,^,&,*,?,_,~])");
                if (password.Length >= 8 && regex1.IsMatch(password) && regex2.IsMatch(password) && regex3.IsMatch(password))
                {
                    resultValue.Text = "4 уровень";
                }
                return;
    Ответ написан
    Комментировать
  • Как выполнять какие-то операции на сервере регулярно (с определённым интервалом)?

    Planet_93
    @Planet_93
    Кроме всего перечисленного выше еще есть Hangfire
    Ответ написан
    Комментировать
  • ASP.NET Нужна ли базовая модель для всех моделей?

    Planet_93
    @Planet_93
    Это вполне нормальная практика. Главное определить будут ли в системе модели с набором общих полей.

    Например, есть базы, где данные не удаляют, а записи ставят признак Deleted. Добавление и редактирование каждой записи фиксируются. То в таких случаях есть смысл вынести общие поля в базовый класс и его уже наследовать.

    /// <summary>
    	/// Базовый класс для всех классов модели приложения
    	/// </summary>
    	public abstract class BaseEntity
        {
            /// <inheritdoc />
            /// <summary>
            /// Идентификатор
            /// </summary>
            [Key]
            public virtual long Id { get; set; }
            /// <inheritdoc />
            /// <summary>
            /// Дата занесения записи
            /// </summary>
            public DateTime CreatedOn { get; set; } = DateTime.Now;
            /// <summary>
            /// Дата модификации записи
            /// </summary>
            public DateTime UpdatedOn { get; set; } = DateTime.Now;
            /// <inheritdoc />
            /// <summary>
            /// Активен
            /// </summary>
            [DefaultValue(true)]
            public bool Active { get; set; } = true;
            /// <inheritdoc />
            /// <summary>
            /// Удален
            /// </summary>
            [DefaultValue(false)]
            public bool Deleted { get; set; }
        }
    Ответ написан
    Комментировать
  • Как парсить атрибут src в теге img через AngleSharp С#?

    Planet_93
    @Planet_93
    Попробуйте так:
    var menuPics = document.QuerySelectorAll("img.imgClass")
        .Select(el => el.GetAttribute("src")).ToArray();
    Ответ написан
  • Почему ParentCategory = null?

    Planet_93
    @Planet_93
    Либо напишите virtual для данного поля модели данных.
    public class Service : EntityBase
        {
    [Required]
            public Guid Id { get; set; }
            [Required]
            [Display(Name = "Название")]
            public override string H1 { get; set; }
            [Display(Name = "Категория")]
            public virtual Category ParentCategory { get; set; }
        }

    Либо используйте Include().
    dataManager.Services.GetAll().Include(x => x.ParentCategory).FirstOrDefault(x => x.Id ==id);

    EntityFramefork по умолчанию не подтягивает сложные объекты, то есть записи из связанных таблиц.
    Ответ написан
  • Как будет выглядеть код из Pascal на C#?

    Planet_93
    @Planet_93
    На C#

    int x = 123;
    
    //Целая часть при делении, то есть ответ будет 1
     int a = x / 100;
                
    Console.WriteLine(a);//1
    
    //В скобках берем целую часть, то есть 12 и от 12 получаем остаток, то есть 2
     int b = (x / 10) % 10;
    
    Console.WriteLine(b);//2
    
    //Остаток от деления, то есть 3
    int c = x % 10;
                
    Console.WriteLine(c);//3
    
    Console.ReadKey();


    Пример на паскале и описание тут.
    Ответ написан
    Комментировать
  • ASP.NET Core и плавающая точка в EFCore. Как реализовать?

    Planet_93
    @Planet_93
    Как вариант заменяйте точку на запятую.

    Вот вы получаете на контроллер модель для записи.
    Поля , там где числа преобразовываем в строку и делаем реплейс.

    public ActionResult Edit(string number)
    		{
    			number = number.ToString().Replace(".",",");
    			return View();
    		}
    Ответ написан
  • Не работает метод OnKeyDown. В чём ошибка?

    Planet_93
    @Planet_93
    Посмотрите как работает switch. И убедитесь приходит ли вам данное событие в метод с помощью точки останова.

    Console.WriteLine("Нажмите Y или N");
    string selection = Console.ReadLine();
    switch (selection)
    {
        case "Y":
            Console.WriteLine("Вы нажали букву Y");
            break;
        case "N":
            Console.WriteLine("Вы нажали букву N");
            break;
        default:
            Console.WriteLine("Вы нажали неизвестную букву");
            break;
    }
    Ответ написан
  • Как заполнить List через html страницу?

    Planet_93
    @Planet_93
    Вы можете как этот пустой лист послать на преставление, так его и передавать уже заполненным, например по кнопке сохранить.

    Для реализации данных действия, я например использую:

    1. Статическую библиотеку vue.js. Для рендеринга полученных данных.
    2. Axios. Для запросов на сервер для получения данных.
    3. Формат данных Json.

    По факту получается так. Вы переходите на страницу. В этот момент во vue есть метод, который срабатывает при загрузке страницы.

    mounted(){
    axios.post("/Home/GetList", null).then(resp =>{
    this.list = resp.data;
    });
    }

    В этом методе (mounted) мы выполняем запрос на сервер.
    Этот запрос стучится в метод GetList в контролере Home на сервере.
    public JsonResult GetList(){
    var res = db.TableList.GetAll();
    return Json(res);
    }

    В контроллер приходит запрос. В контроллере вытаскиваете данные из таблицы и отдаете их клиенту.

    Далее на клиенте данные получаются в переменную list во vue, и динамически данные появляются.

    Потом пользователь изменяет какие-то данные и нажимает кнопку сохранить. Лист отправляется на сервер и там происходит изменения внесенные пользователем.
    Ответ написан
    Комментировать
  • Как понять что в объект была добавлена информация, но не изменена существующая?

    Planet_93
    @Planet_93
    Пример

    public class Customer
        {
            private string name;
            private int age;
            public int Id { get; set; }
            public string Name
            {
                set
                {
                    if (name != null)
                    {
                        Console.WriteLine("Поле уже заполнено " + name);
                    }
                    else
                    {
                        name = value;
                    }
                }
                get { return name; }         
            }
            public int Age
            {
                get { return age; }
                set
                {
                    if (age != 0)
                    {
                        Console.WriteLine("Поле уже заполнено " + age);
                    }
                    else
                    {
                        age = value;
                    }
                }
            }
            public Address[] Addresses { get; set; }
            public Job[] Jobs { get; set; }
    
        }
    Ответ написан
  • Где найти нормальные курсы по C#?

    Planet_93
    @Planet_93
    Не вижу смысла вам платить деньги за курсы. Если у вас действительно есть желание изучать данный язык программирования, то есть много бесплатных источников.
    Очень много подробного материала по c# вы можете найти на сайтах https://metanit.com/sharp и https://professorweb.ru/
    Сайты на русском языке. На них вы найдете всё: начиная с подробного описания основ языка, заканчивая разработкой сайтов ASP .NET MVC и ASP .NET CORE, а также разработкой кроссплатформенных приложений под Android, iOS и Windows 10 в Xamarin.Forms
    Ответ написан
    Комментировать