Задать вопрос
WhileAD
@WhileAD

Реализовать ajax в asp dot net core 6?

Приветствую!

Появилась задача: нужно по нажатию кнопки передать некоторые данные, а затем обновить содержимое в определенном div-блоке без перезагрузки страницы. Причем, сам блок мы берем из другого cshtml файла с помощью:
@Html.Partial("~/Views/Shared/_form.cshtml");
Нормальных фреймоврков для работы с ajax в шестой версии asp dot net не нашел, ибо большинство устарело.
  • Вопрос задан
  • 354 просмотра
Подписаться 1 Средний Комментировать
Решения вопроса 3
firedragon
@firedragon
Не джун-мидл-сеньор, а трус-балбес-бывалый.
Нормальных фреймоврков для работы с ajax в шестой версии asp dot net не нашел, ибо большинство устарело.

А какие фреймворки тебе нужны для этого?
Берёшь JS, делаешь запрос к api-ручке на бэке, меняешь html как задумано.

Для удобства - обычно делают два проекта:
1. ASP NET Core MVC, который отвечает за рендер html
2. ASP NET Core (webapi), который является владельцем данных и предоставляет их первому проекту.
Если сложно - можно всё в один проект свалить.

Но лично мне asp net core mvc (с его cshtml и razor) не очень нравится и я бы скорее взял одно из двух:
1. Blazor
2. Какой-нибудь js-фреймворк для SPA типа vue или (как это называется то) типа remix, nextjs, nuxtjs,
Ответ написан
@mvv-rus
Настоящий админ AD и ненастоящий программист
Если вы умеете отправлять и получать запрос с фронта в формате JSON на голом JS через XMLHttpRequest или fetch (либо у вас есть фронтовой фреймворк для этого), то вам повезло: сама Microsoft о вас позаботилась. Как раз в ASP.NET 6 появился Minimal API. Суть его в том, что если раньше базовые делегаты-обработчики конечных точек маршрутизации (подключаемые через Map/MapGet/MapPost etc) должны были иметь тип RequestDelegate (HttpContext context на входе, Task на выходе, а в context.Response изволь писать сам), то теперь делегаты-обработчики могут иметь произвольный тип (ну, почти): принимать произвольное количество произвольных параметров - ASP.NET привяжет их к путям/параметрам в URL и содержимому тела запроса как надо - и возвращать произвольный объект в качестве результата - он будет правильно записан в context.Response: например, если это обычный объект, то он будет послан как JSON. То есть, Minimal API - это новый способ написания контроллеров API, безо всякого MVC.
Что касается вашего вопроса: если вы передадите с фронта через XHR/fetch объект в JSON с полями и значениями в них, то ASP.NET привяжет параметры метода-обработчика к одноименным полям объекта, а объект, возвернутый из метода-обработчика, закодирует в JSON. И никакого дополнительного фреймворка не надо.
Подключаются эти обработчики все теми же методами Map/MapGet/MapPost etc: просто в качестве делегата передаете не RequestDelegate а нужный метод-обработчик.
Но есть нюанс: в документации по ASP.NET 6 все это великолепие еще толком не описано - читайте документацию по ASP.NET 7: она в целом подходит, только не испольуйте группы маршрутизации и фильтры - их в ASP.NET 6 ещё не было.
PS Кому интересно: как это работает под капотом(конкретно для ASP.NET 7), описано в серии статей Эндрю Лока (знаете такого автора книжек по ASP.NET?).
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
BasiC2k
@BasiC2k
.NET developer (open to job offers)
Как можно сделать:
1. Добавить контроллер для обработки API запросов от фронта;
2. На фронте по обработчику нажатия кнопки делать fetch запрос к API;
3. API возвращает json, по результатам обработки которого элементы страницы меняются.

Внедрение @Html.Partial("~/Views/Shared/_form.cshtml"); роли не играет, т.к. скрипт будет рассматривать итоговую страницу как единое целое. Обращаться к элементам на странице проще через jquery.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы