2017-12-19 23 views
0

amcharts 주식 차트를 사용하고 있습니다. 다음 코드를 사용하는 경우, 내 차트 부하 벌금과 모든 작동합니다MVC 컨트롤러 조치를 호출 할 때 amcharts eventDataLoader로 stockEvents를로드 할 수 없습니다.

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(); 
    } 
} 

그러나, 두 가지 일을 : 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

[{ "날짜": .ChartEvents)는, 내가 잘 나타납니다 다음 얻을 "날짜 (2007,12,17)", "유형": "arrowUp", "backgroundColor로": "# 00CC00 ","graph ":"g1 ","description ":" "}, {"날짜 ":"날짜 (2008,10,27) ","유형 ":"arrowUp ","backgroundColor ":"# 00CC00 ","graph ":"g1 ","description ":" "}, {날짜} :"Date (2009,07,06) ","type ":"arrowUp ","backgroundColor ":"# 00CC00 ","그래프 ":"g1 ","설명 ":" "}]]

도움이나 통찰력을 주시면 감사하겠습니다.

답변

0

가이드 here에 따라 문제가 발생할 수있는 몇 가지 사항이 있습니다.

먼저, 인용 : URL을 주위

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

주의 작은 따옴표를. 그것들이 없으면 당신의 js는 유효하지 않습니다. 그래서 그래프가 표시되지 않습니다.

둘째, "dataLoader"를 사용하지만 "eventDataLoader"속성은 사용하지 않습니다. 나는 따옴표를 추가, 실제로

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

감사합니다 안드레이 , 그래 내가 추가 한 플러그인을 참조하는 것을 잊었다 : 제

, dataloader가 플러그인을 포함해야합니다. 그러나 eventDataLoader는 정확하며 페이지 아래쪽에서 참조한 가이드에 언급되어 있습니다.즉, 차트에 오버레이가 표시되어 이제는 진행 중이므로 파일을로드하는 중 오류가 발생했습니다 :/ChartController/GetChartEvents 그러나 GetChartEvents 메서드는 여전히 호출되지 않습니다. – MikeO

+0

저는 .net 인물이 아니지만 로그 및 브라우저 콘솔의 네트워크 탭에서/ChartController/GetChartEvents에 대한 요청을 시도한 것을 확인하고 응답에서 반환 된 내용을 확인하는 것이 좋습니다. 그러면 상황을 알릴 수 있습니다. – xorspark

+0

몇 가지 변경 사항을 적용한 후 mvc가 경로에 "컨트롤러"라는 단어를 추가 했으므로 컨트롤러 이름이 잘못되었음을 알았 기 때문에 "url"로 호출을 업데이트했습니다. '@ Url.Action ("GetChartEvents", "Chart") ', 및 컨트롤러 작업이 호출되고 있습니다. 모든 도움을 주셔서 감사합니다. – MikeO