Задать вопрос
  • Как вывести список в представление по одному id?

    NikFaraday
    @NikFaraday
    Student full-stack Developer
    Попробуйте юзнуть .Where при выборке, куда передать лямбду с логическим условием, что бы проверить каждый элемент по внешнему ключу, подходит он или нет
    Ответ написан
    Комментировать
  • Как выбрать нужный ClaimIdentity из ClaimPrincipal, если их несколько штук?

    NikFaraday
    @NikFaraday Автор вопроса
    Student full-stack Developer
    Разобрался

    При создании объект ClaimPrincipal, который принимает коллекцию объектов ClaimIdentity, все клаймы будут доступны в HttpContext. Когда вам нужно получить текущего пользователя и его клаймы используя HttpContext(Accessor), свойство User.Claims имеет все клаймы из всех объектов ClaimIdentity, который были использованы во время авторизации, по этому необязательно париться по поводу того, какой из объектов Identity вытянуть, а можно сделать выборку из всех клаймов
    Ответ написан
    Комментировать
  • Как установить checked у radio кнопки?

    NikFaraday
    @NikFaraday
    Student full-stack Developer

    <input type="radio" class="delivery-radio" name="delivery" checked='checked' value="pickup">


    Потому что у вас по стандарту стоит что инпут checked.


    if ($(this).is(':checked') === false ) {
                $('input[name="delivery"]').removeAttr('checked')
                $(this).prop('checked', 'checked');
            }



    Вот этот кусок кода проверяет, если кнопка НЕ чекнуто, ТОГДА мы делаем её НЕ чекнутой ЕЩЁ РАЗ...
    Ответ написан
  • Как ввести логгирование в ASP.NET Core?

    NikFaraday
    @NikFaraday
    Student full-stack Developer
    Логирование используется для записи ошибок в како-то файл. Например, если вы, при чтении из БД получили Exception, тогда вы обращаетесь к логеру и вызываете метод .LogError куда передает ошибку в виде строки. Эта строка будет записана в файл, откуда вы потом сможете это прочитать.

    Встроенный интерфейс ILogger<> подойдёт вам вполне. Для настройки места, куда будут сохраняться логи, читайте конфигурацию логера, как его правильно настроить

    Да, логи пишутся вручную
    Ответ написан
  • Почему текст вылазит за границы таблицы?

    NikFaraday
    @NikFaraday Автор вопроса
    Student full-stack Developer
    Решение:

    <style type="text/css">
        th, td {
            white-space: unset;
        }
    </style>


    Работает только в том случае, если в тексте есть пробелы, если пробелов нет, тогда текст так и будет вылазить за пределы монитора)
    Ответ написан
    Комментировать
  • Как лучше передавать стандартные значения в другие классы?

    NikFaraday
    @NikFaraday
    Student full-stack Developer
    Ну, вы движетесь в верном направлении. Создать статический класс в котором будут записаны данные конфигурации и просто вызывать его в тех местах, где это нужно. Если значение нужно только для его получения, можете позначить его readonly (Как вы уже сделали) или public Get; private Set; для свойств.

    Ещё как вариант, можете попробовать использовать статические файлы конфигурации
    Ответ написан
    Комментировать
  • Отличия GET от POST?

    NikFaraday
    @NikFaraday
    Student full-stack Developer
    UPD: пример ниже приведён для MVC архитектуры. API выдаёт данные, а не страницы. HttpGet - это получение информации от сервера. HttpPost - отправка информации на сервер. Основная разница в тому, что Post запрос имеет тело запроса, в котором можно передавать сложные структуры. Get запрос может передавать данные через строку запроса. Так же Get запросы кешируются, в отличие от Post запросов

    HttpGet и HttpPost это два стандартных типа запроса. Так же есть HttpPut, HttpDelete и некоторые другие, основные из каких я перечислил сначала.

    Разница между HttpGet и HttpPost в очень простом виде:
    HttpGet - выдача сервером какой-то информации клиенту. Для примера, сервер отдаёт какую-то информацию, допустим, имя и логин пользователя, который зашёл на сайт, для того, что бы отобразить её где-то на странице. Так же Get запрос может отдавать целые страницы в формате HTML или других форматах. По факту, большинство страниц, что вы видите в браузере, включая эту, была передана нам в браузер от сервера путём выполнения запроса. Такая информация передаётся как HttpGet.

    HttpPost - это отправка данных на сервер. Любая. Когда вы регистрируетесь на сайте, ваши данные отправляются с использованием HttpPost запроса. Когда вы делаете изменения личной информации, обновлённые данные отправляются как HttpPost, хотя в REST API принято такой запрос помечать как HttpPut. Тут речь идёт об отправке сложных структур данных, возможно, фотографий, видео, аудио, информации о местонахождении, контактные данные. Т.е., другими словами, когда вы сервер уведомляете о какой-то новой информации.

    Стоит отметить, что редирект через url является HttpGet запросом. Если вы просто делаете переадресацию на какую-то страницу и в url передаёте id клиента (Для примера), что бы на странице сведений вывести его данные (Опять же, чисто для примера), это НЕ HttpPost запрос, это просто редирект. Потому что вы не обновляете никакую информацию. Когда вы обращаетесь к серверу с просьбой отрисовать/отрендрить страницу и передаёте туда id клиента, сервер отдаёт ответ на HttpGet запрос, который имеет разметку самой страницы.

    Иными словами, HttpGet запрос, это то, когда сервер должен отрисовать новую разметку или вернуть какие-то данные в некотором формате (В основном JSON для API). Может выполняться несколько запросов, если вы во время регистрации на сайте отправляете данные, делается сначала HttpPost запрос с отправкой ваших данных, а потом HttpGet, когда у вас рендрится новая страница, на которую вас перекинуло.

    Так же есть HttpPut - аналогия HttpPost, разницы нет почти никакой. Обычно используется для обозначения запроса на обновление информации, т.к. HttpPost должен работать как запрос на создание. Тот же пример HttpDelete - когда нужно удалить информацию.
    Ответ написан
    11 комментариев
  • Как читать только новые цифры, без старых чётных/нечётных чисел в текстовый документ?

    NikFaraday
    @NikFaraday
    Student full-stack Developer
    Я бы советовал вам сперва улучшить ваш код до понятного уровня, а то тут сложно вообще что либо понять. К примеру: блок if вложен внутрь и никогда не будет работать, так как он отыгрывает роль блока else. Названия переменных просто ад какой-то, что за что отвечает - непонятно. Потоки без using. Для ввода с клавиатуры какого-то выбора используется string и блок switch. Разберитесь с этим

    Решение проблемы может быть в том, что у вас два блока if вложены, прочитайте про условные операторы и переделайте
    Ответ написан
    Комментировать
  • Как сделать элемент установленным по стандарту если я использую Html.GetEnumSelectedList?

    NikFaraday
    @NikFaraday Автор вопроса
    Student full-stack Developer
    Разобрался. Просто нужно ещё передать какое-то значение моделью и установить его как asp-for=... и тогда оно будет отображаться как стандартное
    Ответ написан
    Комментировать
  • Почему ajax передаёт null?

    NikFaraday
    @NikFaraday Автор вопроса
    Student full-stack Developer
    Разобрался методом "Научного тыка"

    UPD: Проблема в том, что модель не может иметь типа enum. Вместо enum лучше поставить int и в сервисах преобразовать в этот тип. Если модель имеет enum и его значение хоть как-то пытается отправиться с фронта, сразу заходит null.
    Ответ написан
    Комментировать
  • Как сделать динамический запрос через Ajax передав данные кликнув на 1 блок и получить их из базы данных в другом блоке?

    NikFaraday
    @NikFaraday
    Student full-stack Developer
    $.ajax({
       url: 'YourUrl',
       method: 'post',
       data: JSON.stringify(' Вытянуть id (ССылку кинул ниже)'),
       dataType: 'json',
       success: (response) => {
          *Тут обращаемся к нужному элементы и вытягиваем из response данные в виде Json*
       }
    });


    Как вытянуть id элемента
    Ответ написан
    Комментировать
  • Почему JS скрипт срабатывает только со 2го - 3го раза?

    NikFaraday
    @NikFaraday Автор вопроса
    Student full-stack Developer
    Разобрался сам, вот решение:

    Проблема заключалась в том, что я пишу бэк-часть на asp.net. На разметке видно, что у меня кнопка для отправки данных на сервер имеет тип submit. Данный тип кнопки составит вам проблему, если вы захотите реализовать передачу данных через ajax в асинхронном режиме.

    Далее объясню решение в том аспекте, как её понимаю я.
    Кнопка типа submit сама по себе пытается отправить форму на сервер параллельно запуская ajax скрипт, а так же перегружается страницу. При перегрузке страницы, почему-то полностью пропадает блок success (Есть несколько причин на это), но блок error почему-то остаётся и потом ловит ответ от сервера (Если такой есть). Если же ответ от сервера будет, допустим, статус-код 200, то блока success нет и, логично, нечему просто перехватывать соответствующий ответ.

    Решение проблемы заключается в том, что бы просто поменять тип кнопки с submit на button и повешать на кнопку событие ajax.
    Ответ написан
    Комментировать
  • Как отправить данные с помощью ajax в приложение на asp .net core?

    NikFaraday
    @NikFaraday
    Student full-stack Developer
    Может немного запоздал с ответом, судя по дате вопроса, но может это поможет новым молодым разработчикам)

    1) Экшен (Метод контроллера с возвращаемым значение IActionResult) должен иметь атрибут IgnoryAntiforgetyToken ОБЯЗАТЕЛЬНО, если вы не генерируете его самостоятельно.
    2) ajax запрос должен передавать json данный, если вы указываете тип передачи данных json соответственно. Для этого, перед ajax запросом, пропишите что-то типа let jsonData = JSON.stringify("something").
    3) Самое главное, url нужно указывать вот так: '@Url.Action("ActionName", "ControllerName")'
    4) Методы success и error, если вы пишете там function(response), то вот этот response это локальная переменная, которая показывает сам ответ от сервера. Для получения каких-то данных от сервера, нужно прямо обращаться к той переменной, которую вы передаёте через Json, для примера, если возврат имеет вот такой вид

    return Json(new { message = "some message" } ):

    Тогда на ajax'е вы должны обращаться к этой message через переменную response, типа вот так:

    alert(response.message);
    Ответ написан
    Комментировать
  • Как правильно произвести поиск строк в файле и извлечь из них данные?

    NikFaraday
    @NikFaraday
    Student full-stack Developer
    Небольшой код для считывания данных из файла и записи в список:
    List<string> logs = new List<string>();
    using(StreamReader reader = new StreamReader("fileName.txt"))
    {
       while(!reader.EndOfStream)
       {
          logs.Add(reader.ReadLine());
       }
    }


    После этого, в списке logs будут все СТРОКИ из файла логов (Если он txt в данном случае). Далее, вы можете попробовать пройтись по этому списку и каждый элемент проверить с помощью метода класса String - IsContain который принимает аргументом строку. Если лог с ошибкой 100% имеет часть строки как Number of errors, вы можете сразу проверить сам лог

    Далее, можно уже просто по индексу искать, если у вас один и тот же паттерн для генерации данного лога ошибки, мол, если количество символов там не меняется никогда.

    Или можно применить метод Split(' ') для разбиения строки по пробелу, после чего элемент с индексом 6 будет иметь количество ошибок с точкой в конце (Как часть строки). После этого применить метод TrimEnd('.'), т.е. удалить указанный символ с конца строки и потом этот элемент просто int.Parse(...), что на выходе даст вам целое число ошибок. Но, лучше используйте int.TryParse(...)
    Ответ написан
    Комментировать
  • Возможно ли уменьшить строку с цифрами в 10 раз и потом вернуть её обратно?

    NikFaraday
    @NikFaraday
    Student full-stack Developer
    Технически, это сделать можно, но для этого вам нужно более детально изучить методы кодирования информации, вот одни из самых простых, которые вы можете реализовать:

    • Алгоритм Шеннона — Фано
    • Алгоритм Хаффмана
    • Метод LZ77
    • Метод LZSS
    • Метод LZ78
    • Метод LZW
    • Метод Хэмминга (Сложный)
    Ответ написан
    Комментировать
  • Как параметризировать репозиторий базы данных?

    NikFaraday
    @NikFaraday
    Student full-stack Developer
    Лично мой совет:

    Во первых, попробуйте сначала asp.net mvc, так как asp.net web api предлагается для тех программистов, которые имеют хотя бы 2 года коммерческого опыта.
    Во вторых, для новичков рекомендуется использовать Entity Framework (Для MS SQL Server и SSMS)
    Во трерьих, наследование от интерфейса (Правильно называется реализацией интерфейса, наследование только от классов) не создаст вам проблем, особенно если у вас в таком случае не возникает проблема компилляции (Какая именно?)
    Во четвертых, реализация интерфейсов вам понадобится для так званого "Конвейера", который вы должны изучить на asp.net mvc
    Ответ написан
    Комментировать
  • Почему в ListView не показываются элементы, а также является null?

    NikFaraday
    @NikFaraday
    Student full-stack Developer
    Данный класс, в котором вы пишете (Form1) является partial (Прочитайте об этом). Вторая часть этого класса инициализирует (Т.е. создаёт) всё компоненты (Кнопки, текстБоксы и т.д.) на форме. По этому, до того, как на форме появятся хоть какие-то элементы, их нельзя, т.к. технически, они не будут ещё существовать вообще (т.е. null)
    Ответ написан
    Комментировать
  • Как привязать поведение ссылки/кнопки к конкретному экземпляру класса?

    NikFaraday
    @NikFaraday
    Student full-stack Developer
    Немного не понял задачу, так что дам ответ, на то, что я понял)

    Во первых, попробуйте использовать JS, если нужно в зависимости от "Чего-то" изменить "Что-то", но это, как вы поняли, работает, если вам нужны изменения на вьюхе (Тут даже Vue.js подойдёт лучше).

    Во вторых, попробуйте использовать другие классы для таких задач. Тут вам уже нужен будет (Возможно) Ajax для корректной работы с вьюхами. Через Ajax пробуйте переадресовать клик "Куда-то" и там уже обработать
    Ответ написан
  • Почему Entity Framework Core не создаёт столбцы в таблице?

    NikFaraday
    @NikFaraday Автор вопроса
    Student full-stack Developer
    Оказывается проблема была в отсутствии nullable связей между таблицами
    Ответ написан
    Комментировать
  • Как переопределить встроенную валидацию в конвейер обработки запроса .net core?

    NikFaraday
    @NikFaraday
    Student full-stack Developer
    Что-то рано вы перешли к web api )
    Лично я использую FluentValidation API (Не путать с Fluent Validator), который вы можете установить через NuGet и посмотреть на офф.сайте, как правильно настроить, буквально до часа работы займёт.
    Та же можно использовать стандартное свойство Model внутри контроллера и из него свойство IsValid для валидации модели либо отдельно проверять каждое свойство/поле на какое-то конкретное значение (== null, is null, String.IsEmpty(...)) и возвращать соответствующий сетевой код, для примера, в вашем случае, можно сделать return BadRequest( new { response = "Some fields is empty });
    BadRequest относится к типам, которые доступны по стандарту и в asp.net имеют соответствующие значения сетевых кодов. Вы используете в примере Ok, т.е. сетевой код 200.
    Ещё попробуйте поставить на метод HttpPost - IgnoreAntiforgetToken или как-то так он называется, возможно ошибка в нём (Если об этом не читали и ничего с этим не делали, тогда прям наверняка)
    Более подробно можете найти в интернете, направление я вам дал)
    Ответ написан