You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Kendo嵌套网格启用编辑时出现‘Name cannot be blank’错误

问题分析与解决方案

核心问题

你遇到的「Name cannot be blank」错误,根源是嵌套网格的DataSource未配置Model主键,且创建子项时未关联父项的ExceptionId外键。Kendo UI Grid在启用批量编辑、InCell模式时,必须明确指定Model的主键字段,否则框架会尝试寻找默认主键(如Name字段),引发验证错误。

修复步骤

1. 恢复嵌套网格的DataSource Model配置

在嵌套网格的DataSource中取消注释Model配置,指定主键为ExceptionReportsModelId:

.DataSource(dataSource => dataSource
         .Ajax()
    .Batch(true)
    .ServerOperation(false)
             .Read(read => read.Action("Hierarchy_ModelRead", "Models", new { ExceptionId = "#=ExceptionId#" }))
                 .Update(update => update.Action("Hierarchy_ModelUpdate", "Models", new { ExceptionId = "#=ExceptionId#" }))
                 .Create(create => create.Action("Hierarchy_ModelCreate", "Models", new { ExceptionId = "#=ExceptionId#" }))
                 .Destroy(delete => delete.Action("Hierarchy_ModelDelete", "Models", new { ExceptionId = "#=ExceptionId#" }))
                 .Model(model =>
                 {
                     model.Id(x => x.ExceptionReportsModelId);
                 })
    )

2. 修复子项创建的外键关联

在Hierarchy_ModelCreate控制器方法中,为新创建的ExceptionReportsModels设置ExceptionId,确保子项关联到对应的父项:

public async Task<ActionResult> Hierarchy_ModelCreate(Guid ExceptionId, [DataSourceRequest] DataSourceRequest request, [Bind(Prefix = "models")] IEnumerable<ModelException> vMs)
{
    if (vMs != null)
    {
        foreach (var ex in vMs)
        {
            var create = new Persistence.Models.ExceptionReportsModels();
            create.ValueForReport = ex.ReportValue;
            create.Model = ex.Model;
            create.ExceptionId = ExceptionId; // 添加这行,关联父项ID
            _db.ExceptionReportsModels.Add(create);
        }
        await _db.SaveChangesAsync();
    }

    return Json(vMs.ToDataSourceResult(request));
}

3. 验证批量提交的绑定前缀

确认控制器方法中的[Bind(Prefix = "models")]是否与嵌套网格的名称匹配。嵌套网格的名称是grid_#=ExceptionId#,批量提交时的前缀应为grid_#=ExceptionId#,但由于是动态名称,Kendo UI会自动处理,不过如果仍有问题,可以尝试去掉[Bind(Prefix)],直接接收IEnumerable<ModelException>参数。

额外检查

  • 确保父网格和嵌套网格的Batch(true)配置正确,批量编辑需要后端支持批量处理集合参数。
  • 检查浏览器控制台是否有其他JS错误,排除前端脚本冲突。

内容的提问来源于stack exchange,提问作者9Snick4

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.18 20:07:05