[英]Kendo UI MVC - basic ajax binding
我看到这里提到的例子
因此,在我的应用程序中,我尝试以这种方式实现它:
家庭控制器
public ActionResult About([DataSourceRequest]DataSourceRequest request)
{
List<ShortDetail> listSD = new List<ShortDetail>();
... fill the list with objects
var v = listSD.ToDataSourceResult(request, sd => new ShortDetail { firstname = sd.firstname, surname = sd.surname, classname = sd.classname});
return Json(v, JsonRequestBehavior.AllowGet)
}
我的模特ShortDetail
public class ShortDetail
{
public string firstname { get; set; }
public string surname { get; set; }
public int classid { get; set; }
public string classname { get; set; }
public string grade { get; set; }
public int studentid { get; set; }
public DateTime birthdate { get; set; }
public int? indicatorID { get; set; }
public string indicatorDescription { get; set; }
public List<ResultMergedWithType> results { get; set; }
}
在我的View About.cshtml中
<div class="col-md-12 table-responsive" id="mapsDiv">
@(Html.Kendo().Grid<KendoExample.Models.ShortDetail>().Name("grid").DataSource(ds => ds.Ajax().Read(read => read.Action("About", "Home"))).Pageable())
</div>
现在我在浏览器中获取原始json
或者,如果我尝试将模型与视图绑定
About.cshtml
@model List<KendoExample.Models.ShortDetail>
@using Kendo.Mvc.UI
<div class="col-md-12 table-responsive" id="mapsDiv">
@(Html.Kendo().Grid<KendoExample.Models.ShortDetail>().Name("grid").DataSource(ds => ds.Ajax().Read(read => read.Action("About", "Home"))).Pageable())
</div>
家庭控制器
public ActionResult About([DataSourceRequest]DataSourceRequest request)
{
...
return View(listSD);
}
我认为您可能错过了本教程中的步骤。 您尚未在任何地方声明您的列模式(步骤9):
@(Html.Kendo().Grid<KendoExample.Models.ShortDetail>()
.Name("grid")
.DataSource(ds => ds.Ajax()
.Read(read => read.Action("About", "Home")))
.Columns(columns =>
{
columns.Bound(c => c.firstname);
columns.Bound(c => c.surname); ...
}
.Pageable())
这是将数据绑定到相关列所必需的。
在使用JSON从return Json(v, JsonRequestBehavior.AllowGet)
返回结果的同时更改代码return Json(v, JsonRequestBehavior.AllowGet)
以return Json(v.ToDataSourceResult(request), JsonRequestBehavior.AllowGet);
为此,您需要using Kendo.Mvc.Extensions;
添加名称空间using Kendo.Mvc.Extensions;
我认为@TechVision是正确的。 我没有测试过,但是您可能没有正确使用该扩展方法。 我有一个类似的设置,并且代码中的唯一区别是:
List<SomeObject> items = new GetSomeObjects();
return Json(items.ToDataSourceResult(request), JsonRequestBehavior.AllowGet);
如果在上述更改后仍然出现错误,则可能是您正确使用了扩展方法,我将打开Web调试器,查看请求的源,看看是否在代码中其他地方调用控制器方法,如BeginForm()
或其他地方。
我发现了我所缺少的。我们必须在Grid <..>()构造函数中指定一个数据源
About.cshtml
@(Html.Kendo().Grid<KendoExample.Models.ShortDetail>(Model).Name("grid").DataSource(ds => ds.Ajax().Read(read => read.Action("About", "Home"))).Pageable())
家庭控制器
public ActionResult About([DataSourceRequest]DataSourceRequest request)
{
...
return View(listSD);
}
具有讽刺意味的是,尽管剑道支持团队无法帮助我解决这个问题。
干杯!
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.