可以请任何人帮我解决我关于Telerik示例的问题,我试图显示带有ajax调用的图表。
代码运行正常,没有任何异常,但它没有触发我的控制器中的action方法。我已经看了很长一段时间但找不到合适的答案。
我的控制器代码如下
public ActionResult Index()
{
DataTable dataTable = GetChartData();
return View(dataTable);
}
public ActionResult Read([DataSourceRequest] DataSourceRequest request)
{
DataTable chartData = GetChartData();
var result = chartData.ToDataSourceResult(request);
return Json(result, JsonRequestBehavior.AllowGet);
}
private DataTable GetChartData()
{
return chartService.GetChartDataById(4);
}
我的索引视图如下
@(Html.Kendo().Chart()
.Name("chartAjaxBinding")
.CategoryAxis(axis => axis.Labels(labels => labels.Template("#: value.split(' ').join('\\n')#")))
.Series(series =>
{
series.Column("Column1").CategoryField("Column2");
})
.DataSource(dataSource => dataSource
.Read(read => read.Action("Read", "MyController"))
))
答案 0 :(得分:0)
默认情况下,Kendo Chart会向服务器发送POST请求,您的操作正在接受GET请求。此外,您不需要添加DataSourceRequest
,也不需要将结果转换为DataSourceResult
。
[HttpPost]
public ActionResult Read()
{
DataTable chartData = GetChartData();
return Json(chartData, JsonRequestBehavior.DenyGet);
}
或者,您可以让图表发送GET请求:
@(Html.Kendo().Chart()
.Name("chartAjaxBinding")
.CategoryAxis(axis => axis.Labels(labels => labels.Template("#:value.split(' ').join('\\n')#")))
.Series(series =>
{
series.Column("Column1").CategoryField("Column2");
})
.DataSource(dataSource => dataSource
.Ajax()
.Read(r => r.Action("Read", "MyController").Type(HttpVerbs.Get)
))