У меня есть именованный метод-обработчик страницы на странице (странице) в моем приложении ASP.NET Core, который вызывается нажатием опции select2.Но метод в коде не вызывается.Вместо этого ajax-запрос возвращает результат, который представляет собой полный HTML-код страницы.В приложении есть еще одна страница с почти таким же кодом.и отлично работает (индекс).По какой-то причине запрос ajax в page.js может увидеть и использовать обработчик в Index.cshtml.cs.
Я пробовал:
-Изменение имени метода и URL
-Изменение формата URL-адреса с '/? Handler = ...' на '/ Page / OnGetCampaign' и использование полного имени метода 'OnGetCampaign', но они вызывают ошибку 404.
- Запуск приложения в разных браузерах
Обработчик в page.cshtml.cs:
public JsonResult OnGetCampaign(string filterBy)
{
var res = context.dbset.AsNoTracking()
.ToListAsync().Result.FindAll(x => x.advertiser == filterBy);
return new JsonResult(res);
}
AJAX-запрос в page.js:
$('#selector').on('select2:select', function (e) {
var selId = e.params.data.text;
console.log(selId);
$.ajax({
type: "GET",
url: '/?handler=Campaign',
data: {
FilterBy: selId
}
}).done(function (result) {
console.log(result);
for (var i = 0; i < result.length; i++) {
//appending data to a table
}
});
});
Результатом должен быть простой массив, но если URL-адрес ajax-запроса находится в формате 'url: /? Handler = (method)', то результатом будет набор html и если он находится в методе 'url: / Page / OnGet (method)) 'форматирование завершается с ошибкой 404.
edit: Вот как выглядит структура папок в моем проекте:
Solution 'project'
-\project
-\wwwroot
-css
-js
-images...
-\Pages
-\Shared
-_Layout.cshtml
-...
-Index.cshtml
-Index.cshtml.cs
-Page.cshtml
-Page.cshtml.cs
-other pages...
Classes.cs
DbContexts.cs
Startup.cs
Program.cs