2017-10-18 6 views
0

다음은 차트를 사용하는 차트 스크립트입니다. js mvc 4 차트에서 차트를 사용하고 있습니다. 데이터 변수가 해안에 있지만 컨트롤러에서 데이터를 볼 때 데이터를 볼 때 또는 차트에 표시되지 않으면 오류가 system.string [] 또는 레이블에 넣을 때 레이블에 표시됩니다. 배열 데이터는 브라우저 콘솔에서 체크인 할 때 표시되지만 오류는 정의되지 않은 비활성입니다. 코드를 검토하여 내가 잘못 된 곳을 알려주십시오. 이제 여기에mvc 그래프의 chart.js가 표시되지 않습니다

<script> 
    var PieChartData = 
     { 
      labels: [@ViewBag.b], 
      datasets: [{ 
       label: 'ProductWise Sales Count', 
       backgroundColor: [ 
        "#f990a7", 
        "#aad2ed", 
        "#9966FF", 
        "#99e5e5", 
        "#f7bd83", 
       ], 
       borderWidth: 2, 
       data: [@ViewBag.a] 
      }] 
     }; 

     window.onload = function() { 
      var ctx1 = document.getElementById("Piecanvas").getContext("2d"); 
      window.myBar = new Chart(ctx1, 
       { 
        type: 'pie', 
        data: PieChartData, 
        options: 
         { 
          title: 
          { 
           display: true, 
           text: "ProductWise Sales Count" 
          }, 
          responsive: true, 
          maintainAspectRatio: true 
         } 
       }); 
     } 
</script> 

는 CONTROLER

 ICharts _ICharts; 

    public ChartController() 
    { 
     _ICharts = new mchart(); 
    } 

    [HttpGet] 
    public ActionResult PieChart() 
    { 
     try 
     { 
      float[] Total; 
      string[] status; 

      _ICharts.mTotalMember(out Total, out status); 
      ViewBag.a = Total; 
      ViewBag.b = status; 

      return View(); 
     } 
     catch (Exception) 
     { 
      throw; 
     } 


    } 

이며,이 내 기능

다음
public class mchart : ICharts 
{ 
    public void mTotalMember(out float [] Total, out string[] Status) 
    { 
     using (SqlConnection con = new SqlConnection(ConfigurationManager.ConnectionStrings["Real"].ToString())) 
     { 
      var productdata = con.Query<Member>("Sp_testing", null, null, true, 0, CommandType.StoredProcedure).ToList(); 

      var varTotal = (from temp in productdata 
          select temp.Percentage).ToArray(); 

      var varStatus = (from temp in productdata 
          select temp.LeadStatus).ToArray(); 

      Total = varTotal; 

      Status = varStatus; 
     } 
    } 
} 

입니다 내 기능 무효 mTotalMember (플로트 [] 총 출력, 문자열 [] 상태 아웃) ;

답변

0

JsonConvert.SerializeObject과 함께 Html.Raw 메서드를 사용하면 ViewBag 항목에서 자바 스크립트 배열을 가져올 수 있습니다. 표현식의 결과로 []으로 마무리 할 필요가 없습니다. @Html.Raw(JsonConvert.SerializeObject(ViewBag.b))은 배열입니다.

var myLabels = @Html.Raw(JsonConvert.SerializeObject(ViewBag.b)); 
var myData = @Html.Raw(JsonConvert.SerializeObject(ViewBag.a)); 

//Let's verify it 
console.log(myLabels); 
console.log(myData); 

var PieChartData = 
    { 
     labels : myLabels, 
     datasets: [{ 
      label: 'ProductWise Sales Count', 
      backgroundColor: [ 
       "#f990a7", 
       "#aad2ed", 
       "#9966FF", 
       "#99e5e5", 
       "#f7bd83", 
      ], 
      borderWidth: 2, 
      data: myData 
     }] 
    }; 
+1

굉장한 형제. 효과가있다. – user2697533