Я использую Kendo UI для пакета ASP.NET Core MVC с веб-приложением Razor Pages, поэтому я пытаюсь использовать технику обработки для операций сервера сетки.
@(Html.Kendo().Grid<CustomerViewModel>()
.Name("CustomersGrid")
.Columns(columns =>
{
columns.Bound(x => x.CustomerId).Title("Student ID");
columns.Bound(x => x.CustomerName).Title("Name");
})
.Pageable()
.Sortable()
.DataSource(dataSource => dataSource
.Ajax()
.PageSize(20)
.ServerOperation(true)
.Read(read => read.Url("/Customers?handler=Read")))
)
Я посмотрел ввкладка сеть, и она делает правильный POST для http://localhost:5000/Customers?handler=Read, однако я не заканчиваю свою точку останова, и я получаю код состояния 400.
В коде страницы бритвы за методом Action названоOnPostReadAsync
Есть идеи, почему это не работает?В дополнение к .Url также попытался использовать read.Action и read.Route в свойстве .Read объекта DataSource.
Вот класс с методом действия:
public class IndexModel : PageModel
{
private readonly ICustomerRepository _customerRepository;
private readonly IMapper _mapper;
public IndexModel(ICustomerRepository customerRepository, IMapper mapper)
{
_customerRepository = customerRepository;
_mapper = mapper;
}
public IList<CustomerViewModel> Customers { get; set; }
public async Task<IActionResult> OnPostReadAsync([DataSourceRequest] DataSourceRequest request)
{
// THIS IS WHERE I WANT IT TO GO FOR READ
var customersFromDb = await _customerRepository.FilterAsync();
return new JsonResult(_mapper.Map<IList<Customer>, IList<CustomerViewModel>>(customersFromDb).ToDataSourceResult(request));
}
}