在 ASP.NET MVC Core 3 项目中,我有适用于 ASP.NET Core 的 Telerik UI。
我已将网格连接到视图,并且控制器操作正在返回数据,但是网格不渲染数据。
我已经订阅了网格上的错误事件,但它没有触发。我也研究过,似乎 .NET Core 处理序列化的方式是驼峰式和帕斯卡式之间的问题,所以我的 Startup.cs 有这个:
services.AddControllersWithViews()
.AddJsonOptions(options =>
{
options.JsonSerializerOptions.PropertyNamingPolicy = null;
但是网格不会渲染任何返回的记录。
网格定义:
@(Html.Kendo().Grid<Web.Models.DemoQueueViewModel>().Name("grid")
.Columns(columns =>
{
columns.Bound(c => c.FirstName);
})
.DataSource(dataSource => dataSource
.Ajax()
.Events(events => events.Error("error_handler"))
.Model(model =>
{
model.Id(p => p.Id);
})
.Read("GridRead", "DemoQueue")
)
)
问题可能与JSON序列化方法有关,当使用
System.Text.Json
方法序列化响应数据时,可能无法序列化复杂对象。
尝试使用Newtonsoft.Json序列化响应数据,通过Nuget安装Microsoft.AspNetCore.Mvc.NewtonsoftJson,然后使用以下代码:
services.AddControllersWithViews().AddNewtonsoftJson();
我对 ASP Net Core 9.0 的修复
builder.Services.AddControllers().AddNewtonsoftJson();
builder.Services.AddRazorPages().AddNewtonsoftJson();
builder.Services.AddControllersWithViews()
.AddNewtonsoftJson(options =>
{
options.SerializerSettings.ContractResolver = new DefaultContractResolver();
});