C# Kendo MVC Razor Grid如何从控制器传递单个模型而不是集合

C# Kendo MVC Razor Grid如何从控制器传递单个模型而不是集合,c#,asp.net-mvc,razor,kendo-grid,kendo-asp.net-mvc,C#,Asp.net Mvc,Razor,Kendo Grid,Kendo Asp.net Mvc,对于正常场景,Kendo MVC Razor或任何其他网格应该绑定到一个集合,其中控制器将DataSourceRequest传递给集合的DataSourceResult,并返回Json结果,如下所示 public ActionResult GetData([DataSourceRequest] DataSourceRequest request, string taskKey) { var query = eSerivce.GetData(taskKey);

对于正常场景,Kendo MVC Razor或任何其他网格应该绑定到一个集合,其中控制器将DataSourceRequest传递给集合的DataSourceResult,并返回Json结果,如下所示

    public ActionResult GetData([DataSourceRequest] DataSourceRequest request, string taskKey)
    {
        var query = eSerivce.GetData(taskKey);
        var result = query.modelCollection.ToDataSourceResult(request);
        return Json(result, JsonRequestBehavior.AllowGet);
    }
上述代码对于任何类型的收集都可以正常工作,网格将使数据正常工作

在我的场景中,我有一个由服务层返回的单个模型,而不是一个集合,并且由于单个实体上没有可用的ToDataSourceResult,因此我无法将DataSourceRequest传递给它,并且如果没有DataSourceRequest,它不会呈现任何信息

e、 g

在上面的代码段中,由于并没有ToDataSourceResult可用,所以当我返回查询时,Grid不会呈现任何数据。我知道我可以将单个模型实体转换为集合来应用必要的操作,但我只是想知道是否有其他方法可以解决这种情况。只返回一条记录的主要原因是在行展开的自定义模板行中显示父网格的过多信息。

Kendo数据源(不仅仅是网格)expect数组,以不同的方式返回模型:

如果是简单列表:

return Json(new[] { query }, JsonRequestBehavior.AllowGet);
或者如果
键入:“aspnetmvc ajax”


“我知道我可以将单个模型实体转换为集合”
-我就是这么做的。如果框架组件需要一个集合(如网格所需),则向其传递一个集合。由一个元素填充的集合仍然是集合。我认为,修改组件绑定到非集合对象要比修改组件容易得多。如果要以这种方式显示有关父记录的额外信息,那么为什么要在子模板中使用网格?您不能使用更适合非收集模型的控件吗?@RossBush grid用于在行扩展时发送按需ajax调用。为此,您建议采取什么其他控制措施?只是想让您知道我在模板中的一个模板中,所以启动jQuery ajax调用不是一个选项,因为我编写的任何内容都将出现在模板的@tags中。@LearningCurve更有意义。你不想把@弄得乱七八糟。我想你可能是在使用客户端模板或部分模板,在这种情况下,显示信息会很容易。
return Json(new[] { query }, JsonRequestBehavior.AllowGet);
return Json(new[] { query }.ToDataSourceResult(request), JsonRequestBehavior.AllowGet);