ASP.Net MVC ページをプログラミングしており、サーバーからのデータを使用して Google チャートを作成しています。x 軸は日付です。y 軸は値です。比較するために 2 行のデータがプロットされています。関連するコードは次のとおりです。
@model IEnumerable<Tuple<DateTime,int,int>>
<div id="chart_div_2" style="width: 900px; height: 500px;"></div>
<script type="text/javascript" src="https://www.google.com/jsapi"></script>
<script type="text/javascript">
google.load("visualization", "1", { packages: ["corechart"] });
google.setOnLoadCallback(drawChart);
function drawChart() {
var arr = [['Year', 'Sales', 'Expenses']];
//Using the Razor Model to create a Javascript array.
var arr2 = [
@foreach(var row in Model)
{
@:["@row.Item1.ToString("MMM d")", @row.Item2, @row.Item3],
}
];
for (var i = 0; i < arr2.length; i++)
{
arr.push(arr2[i]);
}
var data = google.visualization.arrayToDataTable(arr);
var chart = new google.visualization.LineChart(document.getElementById('chart_div_2'));
chart.draw(data);
}
</script>
まず、このコードは実際に機能します。この方法で arr2 を作成すると、Razor モデルが使用できるものに変わります。しかし、私の鼻はコードのにおいを言います。それによると、C ベースのプログラミング フロー構文が多少似ている razor と Javascript の 2 つの言語を一緒にすると、次にそれを読もうとする人が混乱する可能性があります。
これを書く良い方法はありますか?