在 asp.net 核心 3.1 中的 kendo ui 网格上绑定失败
Binding is failing on a kendo ui grid in asp.net core 3.1
我正在使用 Telerik kendo 数据网格 我正在使用网络 API 将数据返回到我的网格中,如果我们查看以下内容。以下是我如何定义我的 kendo 读取方法,这个应用程序与我之前使用的应用程序的唯一区别是我使用的是 .net core 3.1
我根据 Telerik 文档添加了这个。
https://docs.telerik.com/kendo-ui/knowledge-base/grid-is-not-showing-data 但网格中仍然没有数据,如下所示。
@(Html.Kendo().Grid<Stock>()
.Name("Grid")
.Columns(columns =>
{
columns.Bound(p => p.ID);
columns.Bound(p => p.Description).Width(180);
columns.Bound(p => p.Name).Width(180);
columns.Command(command => command.Destroy()).Width(160);
})
.ToolBar(toolbar =>
{
toolbar.Create();
toolbar.Save();
})
.Editable(editable => editable.Mode(GridEditMode.InCell))
.Pageable()
.Navigatable()
.Sortable()
.Groupable()
.Filterable()
.Scrollable()
.DataSource(dataSource => dataSource
.Ajax()
.Batch(true)
.PageSize(20)
.ServerOperation(false)
.Events(events => events.Error("error_handler"))
.Model(model =>
{
model.Field(p => p.ID).Editable(false);
model.Field(p => p.Name);
})
.Read("ReadStock", "Stock")
)
)
public async Task<IActionResult> ReadStock([DataSourceRequest] DataSourceRequest request)
{
List<Stock> _result = new List<Stock>();
_result =await apiClient.GetStockFromApi();
object test = Json(_result);
return Json(_result);
}
如果我们查看下面的内容,您会发现我的数据正常。
但是当你看到我的网格时它是空的
我已经为 json.net 添加了正确的合同解析器,但我的网格中还没有数据。在我的启动 cs 中,我有以下内容。
services
.AddControllersWithViews()
.SetCompatibilityVersion(CompatibilityVersion.Version_3_0)
// Maintain property names during serialization. See:
// https://github.com/aspnet/Announcements/issues/194
.AddNewtonsoftJson(options => options.SerializerSettings.ContractResolver = new DefaultContractResolver());
我的库存Class。
public class Stock
{
public int ID { get; set; } // int, not null
public string StockCode { get; set; } // nvarchar(150), null
public string Name { get; set; } // nvarchar(350), not null
public string Description { get; set; } // nvarchar(max), null
public DateTime? StartDate { get; set; } // datetime, null
public DateTime? EndDate { get; set; } // datetime, null
public int? WarehouseId { get; set; } // int, null
public int? IsFreeText { get; set; } // int, null
public decimal? QuanityInStock { get; set; } // decimal(18,5), null
public decimal? RecordedQuantity { get; set; } // decimal(18,5), null
public bool? UseDescription { get; set; } // bit, null
public string Barcode { get; set; } // nvarchar(50), null
public int? ProductGroup { get; set; } // int, null
public int? TaxCode { get; set; } // int, null
public decimal? PhysicalStock { get; set; } // decimal(18,5), null
public decimal? ActualStock { get; set; } // decimal(18,5), null
public bool? isActive { get; set; } // bit, null
public bool? isDeleted { get; set; } // bit, null
public DateTime? CreatedDate { get; set; } // datetime, null
public string CreatedBy { get; set; } // varchar(100), null
public string UOM { get; set; } // nvarchar(50), null
}
要解决此问题,您需要在 .net core 3.1 应用程序中执行此操作。
services.AddMvc(setupAction=> {
setupAction.EnableEndpointRouting = false;
}).AddJsonOptions(jsonOptions =>
{
jsonOptions.JsonSerializerOptions.PropertyNamingPolicy = null;
})
.SetCompatibilityVersion(CompatibilityVersion.Version_3_0);
我正在使用 Telerik kendo 数据网格 我正在使用网络 API 将数据返回到我的网格中,如果我们查看以下内容。以下是我如何定义我的 kendo 读取方法,这个应用程序与我之前使用的应用程序的唯一区别是我使用的是 .net core 3.1
我根据 Telerik 文档添加了这个。
https://docs.telerik.com/kendo-ui/knowledge-base/grid-is-not-showing-data 但网格中仍然没有数据,如下所示。
@(Html.Kendo().Grid<Stock>()
.Name("Grid")
.Columns(columns =>
{
columns.Bound(p => p.ID);
columns.Bound(p => p.Description).Width(180);
columns.Bound(p => p.Name).Width(180);
columns.Command(command => command.Destroy()).Width(160);
})
.ToolBar(toolbar =>
{
toolbar.Create();
toolbar.Save();
})
.Editable(editable => editable.Mode(GridEditMode.InCell))
.Pageable()
.Navigatable()
.Sortable()
.Groupable()
.Filterable()
.Scrollable()
.DataSource(dataSource => dataSource
.Ajax()
.Batch(true)
.PageSize(20)
.ServerOperation(false)
.Events(events => events.Error("error_handler"))
.Model(model =>
{
model.Field(p => p.ID).Editable(false);
model.Field(p => p.Name);
})
.Read("ReadStock", "Stock")
)
)
public async Task<IActionResult> ReadStock([DataSourceRequest] DataSourceRequest request)
{
List<Stock> _result = new List<Stock>();
_result =await apiClient.GetStockFromApi();
object test = Json(_result);
return Json(_result);
}
如果我们查看下面的内容,您会发现我的数据正常。
但是当你看到我的网格时它是空的
我已经为 json.net 添加了正确的合同解析器,但我的网格中还没有数据。在我的启动 cs 中,我有以下内容。
services
.AddControllersWithViews()
.SetCompatibilityVersion(CompatibilityVersion.Version_3_0)
// Maintain property names during serialization. See:
// https://github.com/aspnet/Announcements/issues/194
.AddNewtonsoftJson(options => options.SerializerSettings.ContractResolver = new DefaultContractResolver());
我的库存Class。
public class Stock
{
public int ID { get; set; } // int, not null
public string StockCode { get; set; } // nvarchar(150), null
public string Name { get; set; } // nvarchar(350), not null
public string Description { get; set; } // nvarchar(max), null
public DateTime? StartDate { get; set; } // datetime, null
public DateTime? EndDate { get; set; } // datetime, null
public int? WarehouseId { get; set; } // int, null
public int? IsFreeText { get; set; } // int, null
public decimal? QuanityInStock { get; set; } // decimal(18,5), null
public decimal? RecordedQuantity { get; set; } // decimal(18,5), null
public bool? UseDescription { get; set; } // bit, null
public string Barcode { get; set; } // nvarchar(50), null
public int? ProductGroup { get; set; } // int, null
public int? TaxCode { get; set; } // int, null
public decimal? PhysicalStock { get; set; } // decimal(18,5), null
public decimal? ActualStock { get; set; } // decimal(18,5), null
public bool? isActive { get; set; } // bit, null
public bool? isDeleted { get; set; } // bit, null
public DateTime? CreatedDate { get; set; } // datetime, null
public string CreatedBy { get; set; } // varchar(100), null
public string UOM { get; set; } // nvarchar(50), null
}
要解决此问题,您需要在 .net core 3.1 应用程序中执行此操作。
services.AddMvc(setupAction=> {
setupAction.EnableEndpointRouting = false;
}).AddJsonOptions(jsonOptions =>
{
jsonOptions.JsonSerializerOptions.PropertyNamingPolicy = null;
})
.SetCompatibilityVersion(CompatibilityVersion.Version_3_0);