Я использую 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));
}
}
Post
метод в вашемCustomers
контроллере - person Jonathan   schedule 12.12.2018Razor Pages
, но только что просмотрел часть документации. Разве ваш URL/Customers?handler=read
не будет искатьOnPostReadAsync
действие в моделиCustomers
? Но у вас это есть в моделиIndex
? Кроме того, вы уверены, чтоPOST
отправляете этот запрос, а не отправляетеGET
? - person Jonathan   schedule 12.12.2018