2017-02-11 16 views
0

У меня есть следующий код в мой контроллер ...данные Морриса не отображаются в MVC зрения

public ActionResult GetData() 
    { 
     var data = new[] {new Entry() {value = 20, year = 2008}, new Entry() {value = 10, year = 2009}}; 

     return Json(data, JsonRequestBehavior.AllowGet); 
    } 

    public class Entry 
    { 
     public int year { get; set; } 
     public int value { get; set; } 
    } 

И это, на мой взгляд ..

<link rel="stylesheet" href="http://cdn.oesmith.co.uk/morris-0.5.1.css"> 
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.9.0/jquery.min.js"></script> 
<script src="//cdnjs.cloudflare.com/ajax/libs/raphael/2.1.0/raphael-min.js"></script> 
<script src="http://cdn.oesmith.co.uk/morris-0.5.1.min.js"></script> 

<script type="text/javascript"> 
    $.get('@Url.Action("GetData")', function (result) { 
      Morris.Line({ 
       element: 'mysecondchart', 
       data: [result], 
       xkey: 'year', 
       ykeys: ['value'], 
       labels: ['Value'] 
      }); 
    }); 
</script> 

В режиме отладки можно увидеть GetData , но не отображается диаграмма. Почему это?

ответ

0

Ваш метод действия возвращает коллекцию элементов и параметров вашего АЯКС функции метод обратного вызова result является массив как этот

[{"year":2008,"value":20},{"year":2009,"value":10}] 

При использовании выражения [result] он оборачивает существующий массив новый массив, следовательно, вы получите вложенный массив как этого

[[{"year":2008,"value":20},{"year":2009,"value":10}]] 

, который не то, что data свойства Line способ ожидает.

Таким образом, решение заключается в замене data: [result] с data: result,

Это должно работать.

$.get('@Url.Action("GetData")', function (result) { 

    Morris.Line({ 
     element: 'mysecondchart', 
     data: result, 
     xkey: 'year', 
     ykeys: ['value'], 
     labels: ['Value'] 
    }); 
}); 
+1

Отлично, спасибо за объяснение. Теперь он отлично справился :) – MTplus

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

  • Нет связанных вопросов^_^