I have a Kendo Grid on a Razor page and I am trying to understand the syntax for the bindings. Specifically, t.Read(r => r.Action("Customer", "Index", new { handler = "ReadRecords" }).Type(HttpVerbs.Post)); It seems the parameters are .Action(Folder,Page,Method) which is unusual for me. I was expecting .Action(action,controller). Any explanation on this would be greatly appreciated. Basically I am trying to call methods from the cshtml.cs page instead of going to a controller class.
Thanks
The folder structure is
Pages
--Customer
------Index.cshtml
Index.cshtml
@page
@model RazorPageGridTest.Pages.Customer.IndexModel
@{
ViewData["Title"] = "Index";
}
@inject Microsoft.AspNetCore.Antiforgery.IAntiforgery Xsrf
@Html.AntiForgeryToken()
@using Kendo.Mvc.UI
<h2>Index</h2>
<div id="grid">
</div>
@(Html.Kendo().Grid<RazorPageGridTest.Customer>().Name("grid")
.AutoBind(false)
.Columns(x=> {
x.Bound("address");
x.Bound("name");
x.Command(c => c.Edit());
})
.DataSource(d=> d.Custom()
.Transport(t=> {
t.Read(r => r.Action("Customer", "Index", new { handler = "ReadRecords" }).Type(HttpVerbs.Post));
t.Update(r => r.Action("Customer", "Index", new { handler = "UpdateRecord" }).Type(HttpVerbs.Post));
})
.Schema(s=> s.Model(m=> m.Id(i=>i.CustomerId)))
.PageSize(10)
)
.Pageable()
)
<script>
$(function() {
var grid = $("#grid").data("kendoGrid");
grid.dataSource.transport.options.read.beforeSend = function (req) {
req.setRequestHeader('RequestVerificationToken', $('input:hidden[name="__RequestVerificationToken"]').val());
};
grid.dataSource.transport.options.update.beforeSend = function (req) {
req.setRequestHeader('RequestVerificationToken', $('input:hidden[name="__RequestVerificationToken"]').val());
};
grid.dataSource.read();
});
</script>
Index.cshtml.cs
using Kendo.Mvc.UI;
using Microsoft.AspNetCore.Mvc;
using Microsoft.AspNetCore.Mvc.RazorPages;
using System.Collections.Generic;
namespace RazorPageGridTest.Pages.Customer
{
public class IndexModel : PageModel
{
public List<RazorPageGridTest.Customer> Data { get; set; }
public void OnGet()
{
}
public JsonResult OnPostReadRecords()
{
List<RazorPageGridTest.Customer> data = new List<RazorPageGridTest.Customer>();
for (int i = 1; i <= 100; i++)
{
data.Add(new RazorPageGridTest.Customer()
{
CustomerId = i,
Name = "Name2 "+ i.ToString(),
Address = "Address2 " + i.ToString()
});
}
return new JsonResult(data);
}
public JsonResult OnPostUpdateRecord([DataSourceRequest] DataSourceRequest request, RazorPageGridTest.Customer customer)
{
System.Diagnostics.Debug.WriteLine("Updating");
return new JsonResult(customer);
}
}
}