Asp.net mvc 4 MVC4与谷歌图表API

Asp.net mvc 4 MVC4与谷歌图表API,asp.net-mvc-4,google-visualization,Asp.net Mvc 4,Google Visualization,我有一个使用Google Charts API的图表,我可以直接从我的视图显示信息,但我想从控制器发送信息,到目前为止,我已经尝试将信息作为Json发送,问题是图表正在显示,但它全是灰色的,没有真正显示任何信息,它只是说“其他”。我有什么遗漏吗?我的控制器是 控制器: public JsonResult GetDataAssets() { List<object> data = new List<object>();

我有一个使用Google Charts API的图表,我可以直接从我的视图显示信息,但我想从控制器发送信息,到目前为止,我已经尝试将信息作为Json发送,问题是图表正在显示,但它全是灰色的,没有真正显示任何信息,它只是说“其他”。我有什么遗漏吗?我的控制器是

控制器:

public JsonResult GetDataAssets()
        {
            List<object> data = new List<object>();
            data.Add(new[] { "Task", "Hours per Day"});
            data.Add(new[] { "Introduction", "100" });
            data.Add(new[] { "Basic 1", "75" });
            data.Add(new[] { "PHP", "24" });
            return Json(data);
        }
public class PieChart
{
    public string Name;
    public decimal valor;
}

public ActionResult GetData()
{
    return Json(CreateDataList(), JsonRequestBehavior.AllowGet);
}

public IEnumerable<PieChart> CreateDataList()
{
    List<PieChart> data = new List<PieChart>();
    PieChart r = new PieChart() { Name = "Introduction", valor = 20 };
    PieChart r1 = new PieChart() { Name = "Basic 1", valor = 24 };
    PieChart r2 = new PieChart() { Name = "PHP", valor = 74 };

    data.Add(r);
    data.Add(r1);
    data.Add(r2);

    return data;
}
公共JsonResult GetDataAssets() { 列表数据=新列表(); 添加(新[]{“任务”,“每天小时数”}); 添加(新[…]{“导言”,“100”}); 添加(新[…]{“基本1”,“75”}); 添加(新的[]{“PHP”,“24”}); 返回Json(数据); } 在我看来,我有这个

视图:


函数drawVisualization(){
$.post('GetDataAssets',{},函数(d){
var data=google.visualization.arrayToDataTable(d);
//创建并绘制可视化。
新的google.visualization.PieChart(document.getElementById('visualization'))。
绘制(数据,{标题:“顶级视频”,pieHole:0.4});
}
)
};
setOnLoadCallback(drawVisualization);

好吧,我不得不重新思考如何做,而不是发送JSON来构建图表信息,以下是我所做的:

控制器:

public JsonResult GetDataAssets()
        {
            List<object> data = new List<object>();
            data.Add(new[] { "Task", "Hours per Day"});
            data.Add(new[] { "Introduction", "100" });
            data.Add(new[] { "Basic 1", "75" });
            data.Add(new[] { "PHP", "24" });
            return Json(data);
        }
public class PieChart
{
    public string Name;
    public decimal valor;
}

public ActionResult GetData()
{
    return Json(CreateDataList(), JsonRequestBehavior.AllowGet);
}

public IEnumerable<PieChart> CreateDataList()
{
    List<PieChart> data = new List<PieChart>();
    PieChart r = new PieChart() { Name = "Introduction", valor = 20 };
    PieChart r1 = new PieChart() { Name = "Basic 1", valor = 24 };
    PieChart r2 = new PieChart() { Name = "PHP", valor = 74 };

    data.Add(r);
    data.Add(r1);
    data.Add(r2);

    return data;
}
公共类图表
{
公共字符串名称;
公共十进制值;
}
公共操作结果GetData()
{
返回Json(CreateDataList(),JsonRequestBehavior.AllowGet);
}
公共IEnumerable CreateDataList()
{
列表数据=新列表();
PieChart r=new PieChart(){Name=“Introduction”,valor=20};
PieChart r1=new PieChart(){Name=“Basic 1”,valor=24};
PieChart r2=new PieChart(){Name=“PHP”,valor=74};
数据。添加(r);
添加数据(r1);
添加数据(r2);
返回数据;
}
在这个观点上

<script type="text/javascript">

function drawVisualization() {
    $.get('GetData', {}, function (data) {
        var tdata = new google.visualization.DataTable();

        tdata.addColumn('string', 'Year');
        tdata.addColumn('number', 'Hours');

        for (var i = 0; i < data.length; i++) {
            tdata.addRow([data[i].Name, data[i].valor]);
        }

        // Create and draw the visualization.
        new google.visualization.PieChart(document.getElementById('visualization')).
                draw(tdata, { title: "Top Videos", pieHole: 0.4 });


    })
};

google.setOnLoadCallback(drawVisualization);

</script>

函数drawVisualization(){
$.get('GetData',{},函数(数据){
var tdata=new google.visualization.DataTable();
tdata.addColumn('string','Year');
tdata.addColumn('number','Hours');
对于(变量i=0;i
好吧,我不得不重新思考如何做,而不是发送JSON来构建图表信息,以下是我所做的:

控制器:

public JsonResult GetDataAssets()
        {
            List<object> data = new List<object>();
            data.Add(new[] { "Task", "Hours per Day"});
            data.Add(new[] { "Introduction", "100" });
            data.Add(new[] { "Basic 1", "75" });
            data.Add(new[] { "PHP", "24" });
            return Json(data);
        }
public class PieChart
{
    public string Name;
    public decimal valor;
}

public ActionResult GetData()
{
    return Json(CreateDataList(), JsonRequestBehavior.AllowGet);
}

public IEnumerable<PieChart> CreateDataList()
{
    List<PieChart> data = new List<PieChart>();
    PieChart r = new PieChart() { Name = "Introduction", valor = 20 };
    PieChart r1 = new PieChart() { Name = "Basic 1", valor = 24 };
    PieChart r2 = new PieChart() { Name = "PHP", valor = 74 };

    data.Add(r);
    data.Add(r1);
    data.Add(r2);

    return data;
}
公共类图表
{
公共字符串名称;
公共十进制值;
}
公共操作结果GetData()
{
返回Json(CreateDataList(),JsonRequestBehavior.AllowGet);
}
公共IEnumerable CreateDataList()
{
列表数据=新列表();
PieChart r=new PieChart(){Name=“Introduction”,valor=20};
PieChart r1=new PieChart(){Name=“Basic 1”,valor=24};
PieChart r2=new PieChart(){Name=“PHP”,valor=74};
数据。添加(r);
添加数据(r1);
添加数据(r2);
返回数据;
}
在这个观点上

<script type="text/javascript">

function drawVisualization() {
    $.get('GetData', {}, function (data) {
        var tdata = new google.visualization.DataTable();

        tdata.addColumn('string', 'Year');
        tdata.addColumn('number', 'Hours');

        for (var i = 0; i < data.length; i++) {
            tdata.addRow([data[i].Name, data[i].valor]);
        }

        // Create and draw the visualization.
        new google.visualization.PieChart(document.getElementById('visualization')).
                draw(tdata, { title: "Top Videos", pieHole: 0.4 });


    })
};

google.setOnLoadCallback(drawVisualization);

</script>

函数drawVisualization(){
$.get('GetData',{},函数(数据){
var tdata=new google.visualization.DataTable();
tdata.addColumn('string','Year');
tdata.addColumn('number','Hours');
对于(变量i=0;i
您能在上述代码中发布
d
的值吗?我敢打赌你的数据格式很差。我将d打印到控制台,这是我看到的数组[4]0:Array[2]0:“任务”1:“每天小时”长度:2 proto:Array[0]1:Array[2]0:“简介”1:“100”长度:2 proto:Array[0]2:Array[2]0:“基本1”1:“75”长度:2 proto:Array[0]3:Array[2]0:“PHP”1:“24”长度:2 proto:Array[0]长度:4 proto:Array[0]您能在上面的代码中发布
d
的值吗?我敢打赌你的数据格式很差。我将d打印到控制台,这是我看到的数组[4]0:Array[2]0:“任务”1:“每天小时”长度:2 proto:Array[0]1:Array[2]0:“简介”1:“100”长度:2 proto:Array[0]2:Array[2]0:“基本1”1:“75”长度:2 proto:Array[0]3:Array[2]0:“PHP”1:“24”长度:2 proto:Array[0]长度:4 proto:Array[0]如果您不介意的话,可以问几个问题。PieChat类不是控制器,那么这部分是如何工作的呢?$。get('GetData'另外,新的控制器代码是什么样子的?很抱歉回答得太晚,如果您仍然需要信息,它看起来是这样的:在我创建的控制器上:public virtual ActionResult GetPieData(){return Json(CreatePieList(),JsonRequestBehavior.AllowGet);}然后是CreatePieList(),仍在控制器上:public IEnumerable CreatePieList(){List data=new List();var newdata=createnewPieChart();data.Add(newdata);}return data;}PieChart对象如下所示:public类PieChart{public string Name{get;set;}public int value{get;set;}需要具有id可视化的元素才能显示图形,需要包含
google.load('visualization','1.0',{'packages':['corechart']})
如果您不介意的话,视图的JavaScript内部,甚至GetData的返回结果都应该是JSONResultCompound的问题。PieChat类不是控制器,那么这是如何实现的