2017-12-19 4 views
0

amcharts株価チャートを使用しています。私のチャートの負荷が罰金、次のコードを使用して、すべてが機能した場合:MVCコントローラアクションを呼び出すときに、amcharts eventDataLoaderで在庫イベントを読み込めません。

var chart = AmCharts.makeChart("chartdiv", { 
    "type": "stock", 
    "theme": "light", 
    "dataSets": [{ 
     "title": "Values", 
     "color": "#b0de09", 
     "fieldMappings": [{ 
      "fromField": "value", 
      "toField": "value" 
     }, { 
      "fromField": "average", 
      "toField": "average" 
     }], 
     "dataProvider": @Html.Raw(ViewBag.ChartData), 
     "categoryField": "date" 
    }], 
    ... 

そして、私のコントローラ:

public class ChartController : Controller 
{ 
    public IActionResult Index() 
    { 
     ViewBag.ChartData = JsonConvert.SerializeObject(GetChartData()); 
     return View(); 
    } 
} 

しかし、私は2つのことが起こる、次のコードを追加することにより、在庫イベントを追加しようとすると、 :1)チャートが表示されなくなり、2)コントローラのGetChartEventsアクションが呼び出されないため、明らかにデータが返されません。

var chart = AmCharts.makeChart("chartdiv", { 
    "type": "stock", 
    "theme": "light", 
    "dataSets": [{ 
     "title": "Values", 
     "color": "#b0de09", 
     "fieldMappings": [{ 
      "fromField": "value", 
      "toField": "value" 
     }, { 
      "fromField": "average", 
      "toField": "average" 
     }], 
     "dataProvider": @Html.Raw(ViewBag.ChartData), 
     "categoryField": "date", 
     "eventDataLoader": { 
      "url": @Url.Action("GetChartEvents", "ChartController"), 
      "format": "json", 
      "showCurtain": true, 
      "showErrors": true, 
      "async": true 
     } 
    }], 
    ... 

とコントローラに

public class ChartController : Controller 
{ 
    … 
    [HttpGet] 
    public IActionResult GetChartEvents() 
    { 
     ChartEvent[] events = new ChartEvent[3]; 
     events[0] = new ChartEvent(new DateTime(2007, 12, 17)); 
     events[1] = new ChartEvent(new DateTime(2008, 10, 27)); 
     events[2] = new ChartEvent(new DateTime(2009, 07, 06)); 

     return Json(events); 
    } 
} 

ChartEventは自分のクラスですが、GetChartEventsが呼び出されることはありませんので、私は問題が返されるデータのフォーマット方法ではないと思います。私は

"url": "/Chart/GetChartEvents", 

GetChartEventsで

"url": @Url.Action("GetChartEvents", "ChartController"), 

を交換する場合を考慮して は、まだ呼び出されることはありませんが、チャートは、それ自体が表示されません。私もViewBagでイベントを配置しようとしたが、それは、最終的な注意として

"dataProvider": @Html.Raw(ViewBag.ChartData), 
"stockEvents": @Html.Raw(ViewBag.ChartEvents) 

いずれも動作しない(と健全性チェック!)、I出力場合ページへ@ Html.Rawの内容は、(ViewBag [{ "日付"

:: "日付(2007,12,17)"、 "タイプ": "arrowUp"、 "backgroundColorの": "#00CC00 .ChartEvents)、私は細かい表示され、次の取得します"、" graph ":" g1 "、" description ":" "}、 {"日付 ":"日付(2008,10,27) "、"タイプ ":" arrowUp "、" backgroundColor ":"#00CC00 "、" graph ":" g1 "、" description ":" "}、 {" date ":" Date(2009,07,06) "、" type ":" arrowUp "、" backgroundColor ":"#00CC00 "、" graph ":" g1 "、" description ":" "}]]

助力や洞察力があれば幸いです。

答えて

0

ガイドhereに従うと、問題を引き起こす可能性のあるものはほとんどありません。

まず、引用:URL周り

"url": '@Url.Action("GetChartEvents", "ChartController")', 

お知らせ単一引用符を。それらがなければ、あなたのjsは無効です。それがグラフが表示されない理由です。

第2に、「dataLoader」を使用し、「eventDataLoader」プロパティーは使用しません。

第三に、データローダーのプラグインが含まれていることを確認してください:確かに

<script src="amcharts/plugins/dataloader/dataloader.min.js" type="text/javascript"></script> 
+0

おかげアンドレイ 、私は引用符を追加して、はい、私は追加のプラグインを、参照するために忘れていました。ただし、eventDataLoaderは正しいですし、ページの下部に向かって参照したガイドに記載されています。つまり、グラフの上にオーバーレイが表示され、 ファイルの読み込み中にエラーが発生するためです:/ ChartController/GetChartEvents しかし、GetChartEventsメソッドはまだ呼び出されません。 – MikeO

+0

私は.netの人ではありませんが、あなたのログとブラウザのコンソールのネットワークタブで、/ ChartController/GetChartEventsへのリクエストを試行し、返された内容を確認することをお勧めします。 – xorspark

+0

いくつかの変更を加えた後、mvcがパスに「コントローラ」という単語を追加したのでコントローラ名が正しくないことを認識しました。したがって、 「url」への呼び出しを更新しました: '@ Url.Action( "GetChartEvents" ) '、 とコントローラアクションが呼び出されています。みんな助けてくれてありがとう。 – MikeO

関連する問題