私のASP.NETに関する知識は非常に限られており、新しいものではありません。モデル内のデータにアクセスするにはJavaScriptを使用してください
私は現在、Google Chartsを使用してグラフのコレクションを生成していますが、同じデータセットをデータベースにクエリするたびにそのコレクションを生成しています。私はこれをどこかに保存したい、またはパフォーマンスを向上させるために一度だけデータを取得したい。
私はキャッシングを検討しましたが、スクリプトが次のチャートに移動するたびに、データはキャッシュに残りませんでした。だから私の他のアイデアは、一度データを取得し、すべてのチャートのJSON文字列を生成し、モデルに格納することでした。 'Model.chart1 - Model.chart2'などのデータを取得することができました。
しかし、私の見解では、このデータをJavascriptからアクセスできないようです。私はHTMLからそこに '@ Model.chart1'をdivコンテナの中に置くことでできるようになりました。
希望する動作は、以下に示すようにJQuery関数内からこのデータにアクセスすることです。しかし、だけではなく、直接「VARグラフ1 = @ 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>