記事詳細


投稿日
2026年08月28日00時25分
タイトル

ASP.NET Core MVC: ASP.NET Core MVC: 「月初の初回アクセス時だけ」、Create.cshtmlを表示した時に「“繰越金額”を入力して下さい」というダイアログを表示するコードを教えたください。

内容

了解です。
ASP.NET Core MVC で「月初の初回アクセス時だけ」Create.cshtml 表示時に「繰越金額を入力してください」というダイアログを出すには、

  1. サーバー側で「今月初回アクセスかどうか」を判定
  2. ビューにフラグを渡す
  3. JavaScriptでダイアログ表示

という流れにします。

コントローラー側(例: YourController.cs

Csharp
using Microsoft.AspNetCore.Mvc; using Microsoft.AspNetCore.Http; using System; public class YourController : Controller { public IActionResult Create() { // 現在の年月をキーにする(例: "2026-08") string currentMonthKey = DateTime.Now.ToString("yyyy-MM"); string sessionKey = "LastAccessMonth"; bool isFirstAccessThisMonth = false; // セッションから前回アクセス月を取得 var lastAccessMonth = HttpContext.Session.GetString(sessionKey); if (lastAccessMonth != currentMonthKey) { // 今月初回アクセス isFirstAccessThisMonth = true; HttpContext.Session.SetString(sessionKey, currentMonthKey); } // ビューにフラグを渡す ViewBag.ShowCarryOverDialog = isFirstAccessThisMonth; return View(); } }

ポイント

  • HttpContext.Session を使うために Program.cs(または Startup.cs)で セッション有効化 が必要です。
Csharp
// Program.cs builder.Services.AddSession(); var app = builder.Build(); app.UseSession();

ビュー側(Create.cshtml

Cshtml
@{ ViewData["Title"] = "Create"; } <h2>Create</h2> <!-- 他のフォームや入力UI --> @section Scripts { <script> document.addEventListener("DOMContentLoaded", function () { var showDialog = @((ViewBag.ShowCarryOverDialog ?? false).ToString().ToLower()); if (showDialog) { alert("繰越金額を入力してください"); } }); </script> }

動作仕様

  • 月初の最初のアクセス時のみ alert が表示されます。
  • 同じブラウザ・同じセッション内では、その月は2回目以降表示されません。
  • 月が変わると再び初回アクセス時に表示されます。

補足

  • この方法は「セッション単位」なので、ブラウザを変えたりセッションが切れると再度表示されます。
  • 「全ユーザー共通で月初1回だけ」にしたい場合は、セッションではなくDBやキャッシュ(Redisなど)で記録する必要があります。

もし「全ユーザー共通で月初1回だけ」にしたいコード例も必要なら、DBまたはメモリキャッシュを使ったバージョンも作れますが、このセッション版が一番簡単です。

このあと、全ユーザー共通版のコードも作りますか?
そうすれば管理者が設定したら全員に一度だけ表示できます。

Powered by Froala Editor

添付画像

画像はありません
Genreのカテゴリ-名
Controllers
編集 | 記事一覧