剑道图的ajax请求没有达到动作方法

时间:2015-06-17 14:50:13

标签: c# asp.net-mvc kendo-ui kendo-asp.net-mvc kendo-chart

可以请任何人帮我解决我关于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"))
))

1 个答案:

答案 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)
))