【发布时间】:2016-08-11 07:05:17
【问题描述】:
我对 ASP.NET 的了解非常有限而且很新,所以请纠正我未能理解的任何内容。
我目前正在使用 Google Charts 生成一组图表,但每次我都在数据库中查询同一组数据。我想将其存储在某个地方,或者只检索一次数据以提高性能。
我研究了缓存,但每次我的脚本移动到下一个图表时,数据都不再在缓存中。所以我的另一个想法是获取一次数据,为所有图表生成 JSON 字符串,并将它们存储在模型中。然后我可以通过“Model.chart1 - Model.chart2”等获取数据。
但是,在我看来,我似乎无法从 Javascript 访问这些数据。我可以通过将“@Model.chart1”放在 div 容器中来从 html 到达那里。
所需的行为是从 JQuery 函数内部访问这些数据,如下所示。但不是从控制器调用方法,而是直接访问模型字段,如 'var chart1 = @Model.chartOne'
<script type="text/javascript">
google.charts.load('current', { 'packages': ['corechart'] });
google.charts.setOnLoadCallback(drawChartOne);
google.charts.setOnLoadCallback(drawChartTwo);
function drawChartOne() {
var jsonData = $.ajax({
url: "/Controller/GetChartOne",
dataType: "json",
async: false
}).responseText;
var options = {
title: 'Chart One',
hAxis: {
title: 'Date'
},
vAxis: {
title: 'Hours'
},
explorer: {
keepInBounds: true
},
height: 500,
width: 1000
};
var data = new google.visualization.DataTable(jsonData);
var chart = new google.visualization.LineChart(document.getElementById('ChartOne'));
chart.draw(data, options);
}
function drawChartTwo() {
var jsonData = $.ajax({
url: "/Controller/GetChartTwo",
dataType: "json",
async: false
}).responseText;
var options = {
title: 'Chart Two',
hAxis: {
title: 'Date'
},
vAxis: {
title: 'Hours'
},
explorer: {
keepInBounds: true
},
height: 500,
width: 1000
};
var data = new google.visualization.DataTable(jsonData);
var chart = new google.visualization.LineChart(document.getElementById('ChartTwo'));
chart.draw(data, options);
}
</script>
【问题讨论】:
标签: jquery asp.net asp.net-mvc