2

kendoUI 网格使用 HttpGet 请求在 AJAX 请求期间更新数据。(http://www.kendoui.c​​om/documentation/asp-net-mvc/helpers/grid/ajax-binding.aspx) 服务器返回一个Json结果,为了让它工作,我们需要使用以下代码:

return Json(Result, JsonRequestBehavior.AllowGet);

这可以很好地完成工作,但它是一个安全漏洞(这就是微软让我们把“AllowGet”放在那里的原因)。

返回 Json 的安全方法是在 HttpPost 中,但 kendoui 网格不允许这样做。

我想使用 kendoui 网格。有没有办法使用 HttpGet,返回 Json,并安全地执行它?

谢谢!

4

2 回答 2

4

如果您使用的是 Kendo Grid 的 MVC 包装器,则不会发生这种情况。由于这种 ASP.NET MVC 行为,网格被配置为发出 POST 请求。确保你已经包括在内kendo.aspnetmvc.min.js。更多信息可以在文档中找到。

于 2012-07-18T10:19:25.970 回答
2

kendo 数据源在使用 ajax 时默认使用 GET,但可以通过定义要发布的传输设置来使用 POST。

这是Telerik kendo CRUD 示例中使用 post 的代码的缩短版本。

<script>
    $(function () {
        $("#grid").kendoGrid({
            toolbar: ["create", "save", "cancel"],
            dataSource: {
                schema: {
                    model: {
                        id: "ProductID",
                        fields: {
                            ProductID: { editable: false, nullable: true },
                            ProductName: { validation: { required: true } },
                            UnitPrice: { type: "number", validation: { required: true } }
                        }
                    }
                },
                transport: {
                    create: {
                        url: "Products.svc/Create", 
                        contentType: "application/json; charset=utf-8", 
                        type: "POST" 
                    },
                    read: {
                        url: "Products.svc/Read",
                        contentType: "application/json; charset=utf-8",
                        type: "POST"
                    },
                    parameterMap: function(data, operation) {
                        if (operation != "read") {
                            return JSON.stringify({ products: data.models })
                        }
                    }
                }
            }
        });
    });
</script>
于 2012-07-18T00:04:30.090 回答