【问题标题】:Kendo UI Grid MVC Helper how to NOT render "type": "aspnetmvc-ajax"Kendo UI Grid MVC Helper 如何不呈现“type”:“aspnetmvc-ajax”
【发布时间】:2013-06-21 16:34:52
【问题描述】:

所以我一直在尝试 Kendo UI 网格,最初我只是从普通的非 MVC 助手生成的客户端网格开始,通过 GET 从 Web API 控制器获取数据。工作得很好,但开始让模型绑定排序和过滤参数变得混乱。

所以我开始使用 MVC 帮助程序并遇到了一个问题,就是这样:

当使用非 MVC 生成的网格时,配置为使用 GET 并且数据源“类型”未设置,GET 参数如下所示:

page    1
pageSize    10
skip    0
sort[0][dir]    asc
sort[0][field]  OrderID
take    10

这是绑定到 DataSourceRequest MVC 帮助程序的正确形式...但是如果我使用 MVC 扩展呈现所述网格,它将数据源“类型”设置为“aspnetmvc-ajax”,这会导致 GET 参数看起来像这个:

filter  
group   
page    1
pageSize    10
sort    OrderID-asc

(如果你有多个排序参数,它会用“~”将它们连接起来。)。第二种格式将无法正确绑定到 DataSourceRequest,因此您最终会得到一个空的“Sorts”成员......但是当您使用它们时,数据发送不正确!

我还尝试按照示例发布到常规 MVC 控制器,但遇到了同样的问题。

无论如何,我试图找到一种方法来告诉扩展程序不呈现 aspnetmvc-ajax。谁有想法?提前谢谢...

【问题讨论】:

    标签: asp.net-mvc asp.net-web-api kendo-ui


    【解决方案1】:

    MVC 扩展正在使用 aspnet-ajax 传输设置,如果您使用将处​​理绑定的 DataSourceRequest 属性,它们将绑定到 DataSourceRequest 对象。查看demos的控制器代码。

        public ActionResult EditingCustom_Read([DataSourceRequest] DataSourceRequest request)
        {
            return Json(SessionClientProductRepository.All().ToDataSourceResult(request));
        }
    

    【讨论】:

    • 感谢 Petur 的回复,但我认为这不是解决方案。我的问题是,当使用 MVC 帮助程序呈现网格时,它以 Ajax GET 模式发送的数据格式无法正确映射到 DataSourceRequest 对象。我已经在请求参数上使用了 FromUri 和 DataSourceRequest 属性,例如分页工作得很好。但是例如“排序”成员始终为空,因为数据应该以第一种格式发送,但正在以第二种格式发送;
    • 您可能忘记包含 kendo.aspnetmvc.min.js。查看文档:docs.kendoui.com/getting-started/using-kendo-with/aspnet-mvc/…
    • 谢谢,但也不是这样。实际上,我在 kendo ui 网站上的博客中找到了解决方案。请参阅答案以获取链接。
    【解决方案2】:

    好的,所以解决方案是使用此处示例代码中为 webapi 提供的模型绑定器:

    Kendo UI Grid Params model binder for Web API

    这是我偶然发现的……当然,这只是我与 Kendo UI 的“冒险”的开始……

    【讨论】:

    • @BenjaminDeClercq - 你需要什么样的信息?请多多包涵,因为这是两年多以前的事情了,所以如果您遇到类似的问题,答案可能不再相关(剑道 UI 在过去 2 年中改进了很多!)
    • 您如何正确使用提供的模型活页夹?我想使用 GET-http-method 在我的控制器上调用该函数。当我尝试使用提供的模型绑定器时,没有发生绑定,当我使用 [FromUri] 时,我得到了分页......但没有排序或过滤......
    • @BenjaminDeClercq - 就我而言,我确实复制了他们的代码......我会说发布一个关于这个的新问题是最好的主意,因为正如我提到的那样,Kendo UI 中的情况发生了很大变化过去 2 年,所以这个解决方案甚至可能不再有效。如果您在此处发布问题的链接,我会尽力提供帮助:)
    • 感谢您的回复!我现在正在编写自己的模型绑定器,因为提供的模型不适合我。我没有使用 Telerik ASP.NET MVC,而是 Telerik Kendo UI (html),我使用的是 WebApi v1.x,没有 OData,我想使用 GET-request 进行读取操作。所以我将 dataSource 的类型设置为 'json' 而不是 'apsnetmvc-ajax' 并且在这种情况下必须以不同的方式进行数据绑定。
    • 他们也不建议在其上使用“aspnetmvc-ajax”。 “Odata 是唯一一种应该由最终用户使用的类型。Aspnetmvc-ajax 被 Kendo UI Complete for ASP.NET MVC 用于执行 Ajax 绑定,我们不建议单独使用它。” - telerik.com/forums/…
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-03-13
    • 1970-01-01
    • 2014-03-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多