Ответы пользователя по тегу ASP.NET
  • Как выбрать нужный ClaimIdentity из ClaimPrincipal, если их несколько штук?

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

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

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

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

    Да, логи пишутся вручную
    Ответ написан
  • Как сделать элемент установленным по стандарту если я использую 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 в приложение на 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
    Лично мой совет:

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

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

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

    Во вторых, попробуйте использовать другие классы для таких задач. Тут вам уже нужен будет (Возможно) Ajax для корректной работы с вьюхами. Через Ajax пробуйте переадресовать клик "Куда-то" и там уже обработать
    Ответ написан
  • Как исправить исключение System.AggregateException: "Some services are not able to be constructed"?

    NikFaraday
    @NikFaraday Автор вопроса
    Student full-stack Developer
    Решение: проблема может возникать, если в другом классе, где вы пытаетесь получить объект через DI используется класс вместо интерфейса.
    Так же ошибка может возникать, если просто не зарегистрирован сервисный класс в конвейере
    Ответ написан
    Комментировать
  • Почему ViewData возвращает пустую строку?

    NikFaraday
    @NikFaraday Автор вопроса
    Student full-stack Developer
    Ответ: html разметка генерируется на сервере. При получении разметки отрабатывается метод HttpGet а при отправке данных - HttpPost. Так как я использую Ajax, у меня страница не перегружается и, соответственно, не генерируется разметка заново, значит значение ViewBag, ViewData и так далее не изменяется после отправки данных на сервер через Ajax. Соответственно, значение ViewBad и ViewData имеют стандартные значения, т.е. null.
    Ответ написан
    Комментировать
  • Велика ли разница между asp.net и asp.net core?

    NikFaraday
    @NikFaraday
    Student full-stack Developer
    Разница есть

    Для примера возьмём задачу получить IP адрес пользователя (За креативность не ругайтесь, как раз такую таску делаю).
    Для выбора есть два варианта:
    1 - Через Dns
    2 - Через HttpContext

    Отличие в том, что при использовании Dns.GetHostEntry(Dns.GetHostName()) вы сможете получить некий список IP адресов и вроде бы проблем в этом нету. Но их нету лишь до того времени, пока вы будете работать на Windows. Такой способ получения IP НЕ БУДЕТ работать на других системах (Linux/Mac) и у вас возникнут проблемы с деплоем на эти системы.
    Почему?
    Dns это класс, который входит в библиотеку .Net Framework а именно System.Net, в тоже время HttpContext(HttpContextAccessor) входит в библиотеку Microsoft.AspNetCore.Http, соответственно, проблем с деплоем на другие системы у вас не возникнет

    Приходим к тому заключению (Думаю, это знаю почти все, что работали вообще на .Net Core системе), что система .Net Framework грубо привязано к ОС Windows, а .Net Core является мультиплатформенной платформой для разработки
    Ответ написан
    Комментировать