У меня есть сетка, определенная следующим образом ...
<div id="view">
<div id="grid" data-role="grid"
data-editable="false"
data-columns="[{ 'field': 'Name' }, { 'field': 'Version'}]"
data-bind="source: releases">
</div>
</div>
и модель вида, определенная так ...
var viewmodel = kendo.observable({
releases: new kendo.data.DataSource({
schema: {
model: {
id: "Id",
fields: {
Id: { type: "string" },
Name: { type: "string" },
Version: { type: "string" },
CreatedOn: { type: "datetime" }
}
}
},
transport: {
read: {
url: "/Release/Index?handler=List",
type: "jsonp"
}
}
})
});
Когда я пытаюсь визуализировать страницу, элементы управления отображаются, но данных нет, вместо этого я получаю ошибку 400. Более подробная информация рассказывает мне об токенах против подделки и о том, как установить заголовок в моем запросе на публикацию, поэтому я добавляю это в начало моей страницы ....
@inject Microsoft.AspNetCore.Antiforgery.IAntiforgery Xsrf
И я установил заголовок для вызова с помощью токена защиты от подделки, с этим в моем коде на стороне клиента ...
$(function () {
const requestVerificationToken = '@Xsrf.GetAndStoreTokens(HttpContext).RequestToken';
const beforeSend = req => req.setRequestHeader('RequestVerificationToken', requestVerificationToken);
const grid = $("#grid").getKendoGrid();
grid.dataSource.transport.options.read.beforeSend = beforeSend;
grid.data.read();
});
Теперь, когда я звоню своей странице, я получаю Cannot read property 'read' of undefined
.
Все, что я прочитал, говорит о том, что я все делаю правильно!
Что я не делаю?