首页 > 解决方案 > Telerik Grid,将 AdditionalFileds 绑定到远程验证

问题描述

问题与这个问题有点相似,但是它已经 7 岁了,也许事情发生了变化。

我有一个 EmplacementDTO (Place) 对象,我在 Telerik Grid(今天最新的 asp.net 核心)中表示它具有这个

[Remote("KeyExist", "Emplacements", AdditionalFields = nameof(Id))]
public string Nom { get; set; }

它检查是否存在另一个 Nom(不同于已编辑(带有 Id)的 Nom)。如果 id 为零,则表示对象已创建,如果不是,则表示对象处于编辑模式。

在此处输入图像描述

网格定义如下:

@(Html.Kendo()
.Grid<EmplacementDTO>()
.Name("Emplacements")
.Columns(columns =>
{
    columns.Bound(c => c.Id).Hidden();
    columns.Bound(c => c.Nom);
    columns.Command(command => { command.Destroy(); });
})
.Editable(editable => editable.Mode(GridEditMode.InCell))
.Navigatable()
.Events(events => {events.Sort("onSort");})
.DataSource(dataSource => dataSource
    .Ajax()
    .Batch(true)
    .ServerOperation(false)
    .Events(events => events.Error("onGridError"))
    .Model(model =>
    {
        model.Id(s => s.Id);
        model.Field(s => s.Id);
        model.Field(s => s.Nom);
    })
    .Read(read => read.Action("Read", "Emplacements"))
    .Create(update => update.Action("BatchCreate", "Emplacements"))
    .Update(update => update.Action("BatchUpdate", "Emplacements"))
    .Destroy(update => update.Action("BatchDestroy", "Emplacements"))
)
)

我在控制器里

[AcceptVerbs("GET", "POST")]
public IActionResult KeyExist(
    [Bind(Prefix = nameof(EmplacementDTO.Nom))] string nom,
    [Bind(Prefix = nameof(EmplacementDTO.Id))] int id)
{
    if (_emplacementService.KeyExist(nom, id))
    {
        return Json($"The place '{nom}' exists already, please choose another !");
    }

    return Json(true);
}

然而问题是id总是0。如何正确地将其绑定到动作?

标签: c#asp.net-coreteleriktelerik-grid.net-5

解决方案


推荐阅读