无法将数据与 Kendo ui 网格绑定
Not able to bind data with Kendo ui grid
这是我的操作方法
public ActionResult Kendo([DataSourceRequest]DataSourceRequest request )
{
var emp = EmployeeManager.GetAllEmployees();
DataSourceResult result = emp.ToDataSourceResult(request);
return Json(result);
}
这是我从官网截取的网格代码
@model IEnumerable<MyProject.Web.Models.EmployeeViewModels.EmployeeViewModel>
@使用 Kendo.Mvc.UI;
@(Html.Kendo().Grid<TalentPro.Employees.Employee>()
.Name("grid")
.DataSource(dataSource => dataSource //Configure the Grid data source.
.Ajax() //Specify that Ajax binding is used.
.Read(read => read.Action("Kendo", "Home")
) //Set the action method which will return the data in JSON format.
)
.Columns(columns =>
{
//Create a column bound to the ProductID property.
columns.Bound(product => product.Id);
//Create a column bound to the ProductName property.
columns.Bound(product => product.FirstName);
//Create a column bound to the UnitsInStock property.
columns.Bound(product => product.LastName);
columns.Bound(product => product.EmailId);
columns.Bound(product => product.PhoneNumber);
})
.Pageable() // Enable paging
.Sortable() // Enable sorting
)
我已经阅读了官方文档,它帮助我将 Kendo ui 与我的 Asp.net 核心 项目集成。但是我不知道我哪里错了,它没有将数据与网格绑定。
我试了很多方法都没用。谁能帮我解决这个问题。
提前致谢。
在您的控制器方法中,替换
return Json(result);
与
return Json(result, JsonRequestBehavior.AllowGet);
出于安全原因,MVC 默认为 DenyGet,因此您必须手动将其设置为 AllowGet,否则它不会 return 正确。
重要的是要注意,如果使用的浏览器是旧版本(它已在 之前修复),这可能会暴露一个小漏洞,使您的 JSON 对象被 returned。只有当您传递特别敏感的信息并且您的用户能够从过时的浏览器访问该页面时,这才应该是一个问题。
您可以阅读有关该主题的更多信息 HERE and HERE。
终于找到解决方案这些是我所做的更改
- 将 ActionResult 更改为 JsonResult
- 在 startup.cs
中又添加了一行
“.AddJsonOptions(选项 => options.SerializerSettings.ContractResolver = new DefaultContractResolver());”
感谢科比
这是我的操作方法
public ActionResult Kendo([DataSourceRequest]DataSourceRequest request )
{
var emp = EmployeeManager.GetAllEmployees();
DataSourceResult result = emp.ToDataSourceResult(request);
return Json(result);
}
这是我从官网截取的网格代码
@model IEnumerable<MyProject.Web.Models.EmployeeViewModels.EmployeeViewModel>
@使用 Kendo.Mvc.UI;
@(Html.Kendo().Grid<TalentPro.Employees.Employee>()
.Name("grid")
.DataSource(dataSource => dataSource //Configure the Grid data source.
.Ajax() //Specify that Ajax binding is used.
.Read(read => read.Action("Kendo", "Home")
) //Set the action method which will return the data in JSON format.
)
.Columns(columns =>
{
//Create a column bound to the ProductID property.
columns.Bound(product => product.Id);
//Create a column bound to the ProductName property.
columns.Bound(product => product.FirstName);
//Create a column bound to the UnitsInStock property.
columns.Bound(product => product.LastName);
columns.Bound(product => product.EmailId);
columns.Bound(product => product.PhoneNumber);
})
.Pageable() // Enable paging
.Sortable() // Enable sorting
)
我已经阅读了官方文档,它帮助我将 Kendo ui 与我的 Asp.net 核心 项目集成。但是我不知道我哪里错了,它没有将数据与网格绑定。
我试了很多方法都没用。谁能帮我解决这个问题。
提前致谢。
在您的控制器方法中,替换
return Json(result);
与
return Json(result, JsonRequestBehavior.AllowGet);
出于安全原因,MVC 默认为 DenyGet,因此您必须手动将其设置为 AllowGet,否则它不会 return 正确。
重要的是要注意,如果使用的浏览器是旧版本(它已在 之前修复),这可能会暴露一个小漏洞,使您的 JSON 对象被 returned。只有当您传递特别敏感的信息并且您的用户能够从过时的浏览器访问该页面时,这才应该是一个问题。
您可以阅读有关该主题的更多信息 HERE and HERE。
终于找到解决方案这些是我所做的更改
- 将 ActionResult 更改为 JsonResult
- 在 startup.cs
中又添加了一行 “.AddJsonOptions(选项 => options.SerializerSettings.ContractResolver = new DefaultContractResolver());”
感谢科比