kendoUI网格使用HttpGet请求在AJAX请求期间更新数据。 (http://www.kendoui.com/documentation/asp-net-mvc/helpers/grid/ajax-binding.aspx)服务器返回一个Json结果,为了使它工作,我们需要使用以下代码:
return Json(Result, JsonRequestBehavior.AllowGet);
这项工作做得很好,但这是一个安全漏洞(这就是为什么微软让我们把“AllowGet”放在那里)。
返回Json的安全方法是在HttpPost中,但是kendoui网格不允许它。
我想使用kendoui网格。有没有办法使用HttpGet,返回Json,并安全地执行它?
谢谢!
答案 0 :(得分:4)
如果您使用的是Kendo Grid的MVC包装器,则不会发生这种情况。由于此ASP.NET MVC行为,网格配置为发出POST请求。确保您已包含kendo.aspnetmvc.min.js
。更多信息可以在docs。
答案 1 :(得分:2)
使用ajax时,kendo数据源默认使用GET,但可以通过定义要发布的传输设置来使用POST。
以下是Telerik kendo CRUD example使用帖子的代码的缩短版本。
<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>