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

Kendo MVC Wrapper Grid如何指定嵌套模型字段的数据类型

Kendo MVC Wrapper Grid 嵌套模型字段数据类型指定方案
  • 核心配置逻辑:不要依赖组件对嵌套模型的自动类型识别,直接在Grid的DataSource配置段,通过Model()方法手动显式声明所有嵌套字段的完整路径和对应类型,MVC Wrapper会自动将该配置序列化为前端可识别的schema规则,无需额外编写jQuery版本的原生配置。
  • 标准配置示例(以嵌套日期字段为例):
@(Html.Kendo().Grid<DriverMainModel>()
    .Name("driverGrid")
    .Columns(columns =>
    {
        // 其余常规列配置省略
        columns.Bound(p => p.NestedDriverView.LicenseExpireDate).Filterable(f => f.UI("DatePicker"));
        columns.Bound(p => p.NestedDriverView.BirthDate).Filterable(f => f.UI("DatePicker"));
    })
    .Filterable()
    .DataSource(ds => ds
        .Ajax()
        .Read(read => read.Action("QueryDriverList", "Driver"))
        .Model(model =>
        {
            // 必须先声明顶层模型主键
            model.Id(m => m.DriverId);
            // 逐一声明嵌套字段的完整路径和类型,路径必须与返回数据结构完全匹配
            model.Field(m => m.NestedDriverView.LicenseExpireDate, typeof(DateTime));
            model.Field(m => m.NestedDriverView.BirthDate, typeof(DateTime));
            // 其余需要指定类型的嵌套字段按相同格式追加即可,支持多层级嵌套
        })
    )
)
  • 注意事项:
    • 如果字段是可空日期类型,类型参数请传入typeof(DateTime?),不要直接使用typeof(DateTime),否则空值场景会触发类型校验报错。
    • 禁止仅单独修改筛选器的UI控件为日期选择器,必须先完成DataSource层的字段类型声明,否则前端序列化筛选参数时仍会按字符串处理,直接抛出“date类型需为string”的栈错误。
    • 如果使用服务端绑定模式而非Ajax绑定,除上述配置外,需要在应用启动入口(.NET Framework为Global.asax的Application_Start方法,.NET Core/5+为Program.cs)注册默认模型元数据提供程序,避免服务端排序、筛选时出现类型解析失败问题,注册代码如下:
// .NET Framework 版本
ModelMetadataProviders.Current = new DataAnnotationsModelMetadataProvider();
// .NET Core/.NET 5+ 版本
builder.Services.AddControllersWithViews()
    .AddDataAnnotationsLocalization();

内容的提问来源于stack exchange,提问作者John Lord

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.27 12:18:16