在 Telerik ASP.NET Core for Ajax 中使用 Grid 为 Id 创建唯一默认值的问题

Issue Creating a Unique Default Value for Id using Grid in Telerik ASP.NET Core for Ajax

在 Telerik 网站的以下代码中,它显示了如何对产品进行 CRUD。我实现了这段代码,但它不起作用,因为网格在将 ProductID 发送到服务器之前没有为它创建值。如果不设置 ProductID 值,网格就不知道它收到的模型就是它发送的模型。因此,它不会将模型标记为 "created"。当我创建另一条记录时,它会同时发送第一条记录。

我想我需要为 ProductID 设置一个默认值,但不知道如何设置。如何为创建的每个产品生成唯一的 ProductID?

Link to code

@(Html.Kendo().Grid<Kendo.Mvc.Examples.Models.ProductViewModel>()
.Name("grid")
.Columns(columns =>
{
    columns.Bound(p => p.ProductName);
    columns.Bound(p => p.UnitPrice).Width(100);
    columns.Bound(p => p.UnitsInStock).Width(100);
    columns.Bound(p => p.Discontinued).Width(100);
    columns.Command(command => { command.Edit(); command.Destroy(); }).Width(172);
})
.ToolBar(toolbar => toolbar.Create())
.Editable(editable => editable.Mode(GridEditMode.InLine))
.Pageable()
.Sortable()
.Scrollable()
.HtmlAttributes(new { style = "height:430px;" })
.DataSource(dataSource => dataSource
    .Ajax()
    .PageSize(20)
    .Events(events => events.Error("error_handler"))
    .Model(model => model.Id(p => p.ProductID))
    .Create(update => update.Action("EditingInline_Create", "Grid"))
    .Read(read => read.Action("EditingInline_Read", "Grid"))
    .Update(update => update.Action("EditingInline_Update", "Grid"))
    .Destroy(update => update.Action("EditingInline_Destroy", "Grid"))
))

他们link article 关于如何创建数据源。他们忘记提及的是,northwind 数据库会自动生成 ProductID。在我的代码中,我想在浏览器中生成它,但找不到方法。

问题出在 Kendo().Grid。它不支持使用 Guids 作为 Id。将Id类型切换为字符串即可解决问题。