【问题标题】:Migrating Telerik MVC Grid to Kendo UI将 Telerik MVC Grid 迁移到 Kendo UI
【发布时间】:2013-02-20 15:01:06
【问题描述】:

我正在将 AJAX 数据绑定 Telerik 网格迁移到 Kendo UI 网格。

使用 Telerik,控制器方法返回 PartialViewResult(使用内部框架函数调用),但使用新的 Kendo UI 网格,我只能通过返回 JsonResult 使其工作。 如果我返回 PartialViewResult,网格将呈现为空。

问题: 是否可以使用 Kendo UI 网格返回 PartialViewResult

Telerik 代码:

[GridAction]
public PartialViewResult SelectProducts()
{
    return DoChildReadingAction(() => 
        _service.GetAllProducts().ToProductListItemViewModels(), "_ChildError");
}

剑道用户界面代码:

public JsonResult SelectProducts([DataSourceRequest]DataSourceRequest request)
{
    return Json(_service.GetAllProducts().ToProductListItemViewModels()
                        .ToDataSourceResult(request));
}

【问题讨论】:

  • 尝试从浏览器打开提供数据的 URL 并检查返回 JSON 的格式或编辑包含返回页面的原始问题,我们可能会对其进行查看。
  • OnaBai,我希望这能回答你的问题: ContentEncoding = null ContentType = null Data = DataSourceResult with 14 items, Errors is null JsonRequestBehavior 是 DenyGet,但我修改为添加参数 AllowGet 然后我正在喂这个到 DoChildReadingAction(),它返回一个 PartialViewResult,其中 Model 包含 JsonResult。
  • 实际上,我要求 JSON 是为了帮助您指定 DataSource 定义的外观。似乎您在DataSourceResult 中返回结果数组,这意味着schema.data 应该是"DataSourceResults"(请参阅docs.kendoui.com/api/framework/…)但不知道JSON 是否到达浏览器并且既看不到代码也看不到JSON 很困难找出为什么不显示。浏览器控制台是否显示任何错误?
  • 使用 Fiddler 我看得更清楚,我得到“_ChildError”页面,它返回错误 500。JSON 为空。所以问题出在 DoChildReadingAction() 函数调用中。谢谢 OnaBai。

标签: c# asp.net-mvc telerik kendo-ui


【解决方案1】:

ASP.NET MVC 的 Kendo UI Grid使用 JSON 结果。它不适用于 PartialResult。更多信息可以在AJAX binding 帮助主题中找到。

你只需要转换你的代码:

public JsonResult SelectProducts([DataSourceRequest]DataSourceRequest request)
{
    return Json(_service.GetAllProducts().ToProductListItemViewModels()
                        .ToDataSourceResult(request));
}

还要确保您已将kendo.aspnetmvc.min.js 包含到您的页面中。否则你会看到DenyGet 错误。查看troubleshooting帮助主题了解更多详情。

【讨论】: