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

Kendo MVC Grid无法调用控制器异步Task Action方法的解决问询

解决方案

错误根源在于控制器的异步Action中未正确处理Kendo的异步数据源转换方法,导致返回的Task未被正确await执行。以下是修正步骤:

1. 修正控制器Action方法

将ToDataSourceResultAsync的调用改为异步等待,并规范异步Action的返回逻辑:

public async Task<ActionResult> MyActionMethod([DataSourceRequest] DataSourceRequest request)
{
    var data = await _service.GetData();
    var model = data.Select((item, index) => new MyModel
    {
        MyData = ...... // 你的字段赋值逻辑
    });

    // 异步等待数据源结果转换
    var result = await model.ToDataSourceResultAsync(request);
    // 使用框架内置Json方法返回结果
    return Json(result, JsonRequestBehavior.AllowGet);
}

关键修改点:

  • 必须用await等待model.ToDataSourceResultAsync(request)执行完成,避免直接返回未完成的Task对象
  • 若需要设置MaxJsonLength,可手动实例化JsonResult并传入已await的结果:
    var result = await model.ToDataSourceResultAsync(request);
    return new JsonResult 
    { 
        Data = result, 
        MaxJsonLength = int.MaxValue, 
        JsonRequestBehavior = JsonRequestBehavior.AllowGet 
    };
    

2. Grid控件配置无需修改

你的Kendo Grid现有配置完全正确,保持原样即可:

@(Html.Kendo().Grid<MyModel>()
  .Name("mygriddata")
  .Columns(column =>
  {
      column.Bound(model => model.MyData).Title("No.").....
  })
    .Pageable(x => x.PageSizes(true).ButtonCount(3).Responsive(false))
    .AutoBind(false)
    .Filterable()
    .Sortable(x => x.Enabled(true))
    .Resizable(resizable => resizable.Columns(true))
    .Scrollable(x => x.Height("auto"))
    .PersistSelection()
    .HtmlAttributes(new { style = "height: 50vh; margin-left:10px", @class = "form-group" })
    .NoRecords()
    .DataSource(dataSource => dataSource
        .Ajax()
        .ServerOperation(true)
        .Model(model =>
        {
            model.Id(item => item.ID);
        })
        .Read(read => read.Action("MyActionMethod", "MyController"))
    )
)

补充说明:

  • Kendo MVC的ToDataSourceResultAsync是异步方法,必须配合await使用,否则会返回未完成的Task实例,导致ASP.NET无法正确处理异步Action的结果
  • 确保项目引用的Kendo.Mvc程序集为较新版本,避免异步方法的兼容性问题

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.24 07:35:54