記事詳細


投稿日
2026年08月27日00時54分
タイトル

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

内容

了解です。
ASP.NET Core MVC で「毎月1日の初回アクセス時だけ Create.cshtml にダイアログを表示」するには、
サーバー側で「今月の初回アクセスかどうか」を判定し、ビューにフラグを渡して JavaScript でダイアログを出すのが安全です。

以下は セッション を使った実装例です。
(セッションはユーザーごとに保持されるため、同じユーザーが月初に一度だけ表示されます)

1. Program.cs(または Startup.cs)でセッション有効化

Csharp
var builder = WebApplication.CreateBuilder(args); builder.Services.AddControllersWithViews(); builder.Services.AddSession(options => { options.IdleTimeout = TimeSpan.FromHours(1); // セッション有効期限 options.Cookie.HttpOnly = true; options.Cookie.IsEssential = true; }); var app = builder.Build(); app.UseHttpsRedirection(); app.UseStaticFiles(); app.UseRouting(); app.UseSession(); // セッションミドルウェア追加 app.MapControllerRoute( name: "default", pattern: "{controller=Home}/{action=Index}/{id?}"); app.Run();

2. コントローラーで「月初の初回アクセス」判定

Csharp
using Microsoft.AspNetCore.Mvc; public class SampleController : Controller { public IActionResult Create() { bool showDialog = false; // 今日が1日かどうか if (DateTime.Today.Day == 1) { string sessionKey = "FirstAccess_" + DateTime.Today.ToString("yyyyMM"); // セッションに記録がなければ初回アクセス if (HttpContext.Session.GetString(sessionKey) == null) { showDialog = true; HttpContext.Session.SetString(sessionKey, "shown"); } } ViewBag.ShowDialog = showDialog; return View(); } }

3. Create.cshtml でダイアログ表示

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

動作仕様

  • 毎月1日にアクセスした場合のみ判定。
  • 同じユーザーがその月に初めてアクセスしたときだけ alert が表示されます。
  • 2回目以降はセッションに記録されるため表示されません。
  • ユーザー単位での制御(全員共通で1回だけにしたい場合は DB やキャッシュを使う)。

💡 補足

  • 全ユーザー共通で「月初の初回アクセス時だけ」表示したい場合は、セッションではなく DB や分散キャッシュ(Redis など) に「今月は表示済みか」を記録する必要があります。
  • JavaScript のみで日付判定すると、ユーザーがページを再読み込みするたびに出てしまうため、必ずサーバー側で制御するのが安全です。

もし「全ユーザー共通で月初に一度だけ」表示するバージョンのコードも必要なら、DB を使ったサンプルも作れますが、作成しますか?
そうすれば管理者が一度アクセスした時点で全員に表示済み扱いにできます。

Powered by Froala Editor

添付画像

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