Asp.net mvc 4 MVC4与谷歌图表API
我有一个使用Google Charts API的图表,我可以直接从我的视图显示信息,但我想从控制器发送信息,到目前为止,我已经尝试将信息作为Json发送,问题是图表正在显示,但它全是灰色的,没有真正显示任何信息,它只是说“其他”。我有什么遗漏吗?我的控制器是 控制器: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>();
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类不是控制器,那么这是如何实现的