2015-06-17 2 views
0

Может ли кто-нибудь помочь мне решить мою проблему с примером из Telerik, где я пытаюсь отобразить диаграмму с помощью вызова ajax.Запрос ajax для диаграммы Kendo, не достигнув метода действия

Код работает отлично, без каких-либо исключений, но он не запускает метод действия в моем контроллере. Я довольно долго оглядывался, но не мог найти правильный ответ.

мой код контроллера, как следовать

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

По умолчанию Кендо 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) 
)) 
+0

спасибо Николаю. Я выяснил корень проблемы. У меня было две разные версии загрузки jquery, и по этой причине я получал ошибку Object, которая не поддерживает свойство или метод «kendochart». Я изначально отлаживался в chrome, который не бросал никаких исключений, и я не имел никакого представления о точном источнике проблемы, но как только я попробовал IE, я получил исключение jquery. Моя проблема исправлена ​​после удаления дублирования jquery. –

Смежные вопросы