Строка Json без escape-символов в старших чартах - PullRequest
0 голосов
/ 28 мая 2018

Я разрабатываю круговую диаграмму с использованием HighCharts.Используя asp.net MVC.

Я пытаюсь передать Java строку данных, используя ViewData, например:

 data: (@ViewData["data"])

Когда я просматриваю эти данные в средстве просмотра JSON, это выглядит так:

[{'name':'Bouwend','y':0},{'name':'Failed','y':5},{'name':'Succes','y':16}]

Когда я ставлю его жестко закодированным за свойством «data:», круговая диаграмма показывается аккуратно.

Однако он завершается ошибкой, когда я пытаюсь передать его из метода действия.В этом случае это выглядит следующим образом:

"[{\"name\":\"Bouwend\",\"y\":0},{\"name\":\"Failed\",\"y\":12},{\"name\":\"Succes\",\"y\":19}]"

Как я могу создать данные JSON без всех escape-строк, чтобы Highcharts их принял?

@model SATS.Tools.Tfs.Extensions.ServiceApi.Controllers.CruiseControlChart

@{
    Layout = null;
}

<!DOCTYPE html>

<html>
<head>
    <link rel="stylesheet" type="text/css" href="css/bootstrap.css" />

    <script src="../../Scripts/jquery-1.10.2.min.js"></script>
    <script src="../../scripts/highcharts.js"></script>
 
    <meta name="viewport" content="width=device-width" />
    <title>CruiseControlChart</title>
    <script type="text/javascript">
        $(document).ready(function () {

            // Build the chart / configure the highcharts
            $('#container').highcharts({
                chart: {
                    plotBackgroundColor: null,
                    plotBorderWidth: null,
                    plotShadow: false,
                    type: 'pie'
                },
                title: {
                    text: '@ViewData["charttitle"]' 
                },
                tooltip: {
                    pointFormat: '{series.name}: <b>{point.percentage:.1f}%</b>'
                },
                plotOptions: {
                    pie: {
                        allowPointSelect: true,
                        cursor: 'pointer',
                        dataLabels: {
                            enabled: false
                        },
                        showInLegend: true
                    }
                },
                series: [{
                    colorByPoint: true,
                    data: (@ViewData["data"])
                 
              data:  [{'name':'Bouwend','y':0},{'name':'Failed','y':5},{'name':'Succes','y':16}]

            //onderstaand is een setje statische test data
            //data: [{
            //    name: "Bouwend",
            //    y: 3
            //}, {
            //    name: "Build succesvol",
            //    y: 64,
            //    sliced: true,
            //    selected: true
            //}, {
            //    name: "Build gefaald",
            //    y: 33
            //}]
        }]
            });
        });
    </script>
    <style type="text/css">
        .center-block {
            display: block;
            margin-right: auto;
            margin-left: auto;
        }
        .col-centered{
            float: none;
            margin: 0 auto;
        }
    </style>
</head>
<body>
    <div class="container">
        <div class="row" style="display: block">
            <a href="http://vm-eli-007/ccnet/ViewFarmReport.aspx" target="_parent">
                @*<div class="col-md-1" id="container" style=" min-width: 310px; height: 400px; max-width: 600px; margin: 0 auto"></div>*@
                <div class="col-md-1" id="container" style=" min-width: 90%; height: 90%; max-width: 600px; margin: 0 auto"></div>
            </a>
            <br/>
            <div class="col-centered"><span> Oldest build time: @ViewData["eldestbuildtime"]</span></div>
        </div>
</div> 

</body>
</html>

1 Ответ

0 голосов
/ 28 мая 2018

Попробуйте обновить код следующим образом:

data: JSON.parse("@Html.Raw(@ViewData["data"])")
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...