はじめに
ASP.NET Core MVC(.NET Core 3.1)でFullCalendarを表示する方法について説明します。
プロジェクト作成
- VS2019で「ASP.NET Core Web アプリケーション」のプロジェクトを選択。
 - 種類の選択で「Web アプリケーション(モデル ビュー コントローラー)」を選択。
 
FullCalendarのダウンロードとセットアップ
- https://fullcalendar.io/ からzipファイルのダウンロード。
 - zipを解答し、packages内のディレクトリを作成したプロジェクトの「wwwroot\lib」内にコピー。
例:wwwroot\lib\fullcalendar-4.4.0\packages 
FullCalendarの設定
今回は解答したzip内の「examples\daygrid-views.html」を参考に設定。
表示するカレンダーの種類によって、参照するcssとjsが変わる。
_Layout.cshtml内の設定。
_Layout.cshtml
<head>
    ~
    <link href="~/lib/fullcalendar-4.4.0/packages/core/main.css" rel="stylesheet" />
    <link href="~/lib/fullcalendar-4.4.0/packages/daygrid/main.css" rel="stylesheet" />
    <link href="~/lib/fullcalendar-4.4.0/packages/timegrid/main.css" rel="stylesheet" />
    <link href="~/lib/fullcalendar-4.4.0/packages/list/main.css" rel="stylesheet" />
</head>
<body>
    ~
    <script src="~/lib/fullcalendar-4.4.0/packages/core/main.js"></script>
    <script src="~/lib/fullcalendar-4.4.0/packages/interaction/main.js"></script>
    <script src="~/lib/fullcalendar-4.4.0/packages/daygrid/main.js"></script>
    <script src="~/lib/fullcalendar-4.4.0/packages/timegrid/main.js"></script>
    <script src="~/lib/fullcalendar-4.4.0/packages/list/main.js"></script>
    @RenderSection("Scripts", required: false)
</body>
Index.cshtmlの設定
Index.cshtml
@*どこか適当な場所に記述。ここにカレンダーが表示される*@
<div id="calendar"></div>
@section Scripts {
    <script type="text/javascript">
        document.addEventListener('DOMContentLoaded', function() {
            var calendarEl = document.getElementById('calendar');
            var calendar = new FullCalendar.Calendar(calendarEl, {
                plugins: [ 'interaction', 'dayGrid', 'timeGrid', 'list' ],
                header: {
                    left: 'prev,next today',
                    center: 'title',
                    right: 'dayGridMonth,timeGridWeek,timeGridDay,listMonth'
                },
                defaultDate: '2020-02-12',
                navLinks: true, // can click day/week names to navigate views
                businessHours: true, // display business hours
                editable: true,
                events: '@Url.Action("GetAllEvents")'
            });
            calendar.render();
        });
    </script>
}
HomeController.csの設定
HomeController内に追記する。
HomeController.cs
public IActionResult GetAllEvents(DateTime start, DateTime end)
{
    var events = new List<Event>
    {
        new Event
        {
            Title = "てすと",
            Start = DateTime.Parse("2020-02-18 00:00:00"),
            End = DateTime.Parse("2020-02-20 00:00:00"),
        }
    };
    return new JsonResult(events);
}
Eventクラス
Event.cs
public class Event
{
    public string Title { get; set; }
    public DateTime Start { get; set; }
    public DateTime End { get; set; }
}
FullCalendarの表示
あとは実行すればカレンダーが表示されます。
GetAllEventsのstartとendには表示されるカレンダーの始まりと終わりの日付が入ってくるので、
それを利用すればGetAllEvents内で範囲内のイベントの取得が可能になります。(DBを参照するなど)
ハマったこと
GetAllEventsで返すJsonResultは配列の必要があるのですが、
それに気が付かずにずっとEventクラスをそのまま返していて、なかなかイベントが表示されずにハマりました。