2

我在我的视图中使用以下代码,它提供了一个警告框作为 json 值。相反,我需要将这些 json 值放在我下面提到的代码中。

    var option = @Html.Raw(Json.Encode(ViewData["choice"]));
    alert(JSON.stringify(option.Data)); 


    var data = [

        {

            values:/* here i need data*/

        }];

    var chart;                                

它是一个 nvd3 条形图应用程序,请帮助我,或者给我一些方法来转换并从 mVC 控制器传递 json 以查看。

这是我的代码,我无法弄清楚这段代码有什么问题,

         <script type="text/javascript">

  var option = @Html.Raw(Json.Encode(ViewData["choice"]));

   var chart;
   var data=[{
    values: [

     @foreach(var item in option)
        {  
            <text>
            { 
                   "FullName": "@item.myfield1" ,
                   "ID": @item.myfield2
            } ,
            </text>
        }
       ]
      }];
    nv.addGraph(function () {
    var chart = nv.models.multiBarHorizontalChart()
      .x(function (d) { return d.FullName })
     .y(function (d) { return d.ID })
     .margin({ top: 30, right: 10, bottom: 50, left: 500 })
     .showValues(true)
      .tooltips(false)
          .showControls(false);

    chart.yAxis
   .tickFormat(d3.format(','));

    d3.select('#chart svg')
   .datum(data)
   .transition().duration(500)
   .call(chart);

    nv.utils.windowResize(chart.update);
    return chart;
    });

   </script>
4

2 回答 2

1

只需您可以执行以下操作。

<script type="text/javascript">
...
var option = @Html.Raw(Json.Encode(ViewData["choice"]));
var chart;
var data=[
{
    values: option
 }];
...
</script>

在您的控制器中,您必须这样做才能检索 JSON 数据。

ViewData["choice"] = Json(listData).Data;

*listData 是包含您的数据的列表的名称。

于 2013-03-05T12:26:04.827 回答
0

我假设你想做这样的事情

<script>
    .....
    var data=[{
    key:"My Key for Chart", 
     values: [
    @foreach(var item in option)
    {
    <text>
    { 
               "label" : "@item.myfield1" ,
               "value" : @item.myfield2
    } ,
    </text>
    }
    ]

    }];

    .....
</script>

希望这可以帮助。

于 2013-03-05T07:25:19.597 回答