ASP.NET MVCでのバックエンドデータとApexChartsフロントエンドの連携

ASP.NET MVCプロジェクトにおいて、バックエンドのデータをフロントエンドのJavaScriptグラフライブラリ(ApexChartsなど)と連携させる必要がある場合、一般的にはMVCコントローラーからAjaxリクエストを通じてデータを取得し、フロントエンドのJavaScriptでそのデータを使用してグラフを描画します。

以下に、ASP.NET MVCでコントローラーを設定してデータを返し、ビューでJavaScript(おそらくjQueryを介して)とApexChartsを使用してこれらのデータを折れ線グラフとして表示する基本的な例を示します。

ステップ 1: MVCコントローラーの設定

まず、ASP.NET MVCプロジェクトでJSONオブジェクトを含むデータを返すコントローラーを作成します。

using System.Web.Mvc;
using System.Web.Script.Serialization; // System.Web.Extensionsへの参照が必要です
  
public class DataVisualizationController : Controller  
{  
    public ActionResult FetchGraphData()  
    {  
        // これがデータソースであると仮定します。実際にはデータベースクエリの結果かもしれません  
        var graphData = new  
        {  
            Months = new[] { "1月", "2月", "3月", "4月", "5月" },  
            Datasets = new[]  
            {  
                new { Label = "売上", Values = new[] { 30, 40, 35, 50, 49 } }  
            }  
        };  
  
        // JavaScriptSerializerを使用してオブジェクトをJSON文字列にシリアライズします(またはJsonResultを使用)  
        JavaScriptSerializer serializer = new JavaScriptSerializer();  
        string jsonData = serializer.Serialize(graphData);  
  
        // JSON結果を返します  
        return Content(jsonData, "application/json");  
  
        // より簡潔にJsonResultを使用する方法(推奨)  
        // return Json(graphData, JsonRequestBehavior.AllowGet);  
    }  
}

ステップ 2: ビューの設定

ビューでは、BootstrapとApexChartsのCSSおよびJavaScriptファイルを導入し、グラフを表示するためのコンテナを追加する必要があります。その後、jQueryの$.ajaxメソッドを使用してコントローラーからデータを取得し、そのデータを使用してApexChartsグラフを初期化できます。

<!DOCTYPE html>
<html>
<head>
    <title>ApexCharts デモ</title>
    <link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.5.2/css/bootstrap.min.css">
    <script src="https://code.jquery.com/jquery-3.5.1.min.js"></script>
    <script src="https://cdn.jsdelivr.net/npm/apexcharts"></script>
</head>
<body>
    <div id="graphContainer" style="width: 800px;height:450px;margin:0 auto;"></div>
  
    <script>
        $(document).ready(function () {
            $.ajax({
                url: '/DataVisualization/FetchGraphData', // URLがコントローラーとメソッドに一致していることを確認してください
                type: 'GET',
                dataType: 'json',
                success: function (response) {
                    var chartConfig = {
                        series: [{
                            name: response.Datasets[0].Label,
                            data: response.Datasets[0].Values
                        }],
                        chart: {
                            height: 400,
                            type: 'line',
                            zoom: {
                                enabled: false
                            }
                        },
                        dataLabels: {
                            enabled: false
                        },
                        stroke: {
                            curve: 'straight',
                            width: 2
                        },
                        title: {
                            text: '月次売上データ',
                            align: 'center'
                        },
                        xaxis: {
                            categories: response.Months
                        },
                        yaxis: {
                            title: {
                                text: '売上高'
                            }
                        },
                        grid: {
                            row: {
                                colors: ['#f3f3f3', 'transparent'],
                                opacity: 0.5
                            },
                        },
                        tooltip: {
                            followCursor: true
                        }
                    };
  
                    var salesChart = new ApexCharts(document.querySelector("#graphContainer"), chartConfig);
                    salesChart.render();
                },
                error: function (xhr, status, error) {
                    console.error('データの読み込みに失敗しました:', error);
                    $('#graphContainer').html('<div class="alert alert-danger">データの読み込みに失敗しました。しばらくしてから再試行してください。</div>');
                }
            });
        });
    </script>
</body>
</html>

この実装により、ASP.NET MVCアプリケーションで動的なデータをApexChartsを使用して視覚化できます。コントローラーはデータをJSON形式で提供し、フロントエンドのJavaScriptはそのデータを使用してインタラクティブなグラフを生成します。

タグ: ASP.NET MVC ApexCharts データ可視化 javascript JSON

5月26日 01:00 投稿