了解です。
ASP.NET Core MVC で 毎月1日に Create.cshtml を表示したときだけ 「繰越金額を入力してください」というダイアログを出すには、
サーバー側で日付判定を行い、その結果を View に渡して JavaScript でダイアログを表示するのがシンプルで安全です。
実装例
1. コントローラー側(Create アクション)
using Microsoft.AspNetCore.Mvc;
using System;
namespace YourApp.Controllers
{
public class SampleController : Controller
{
[HttpGet]
public IActionResult Create()
{
// 今日が1日かどうかを判定
bool isFirstDayOfMonth = DateTime.Now.Day == 1;
// ViewBag にフラグを渡す
ViewBag.ShowCarryOverPrompt = isFirstDayOfMonth;
return View();
}
}
}
2. Create.cshtml 側
@{
ViewData["Title"] = "Create";
}
<h2>Create</h2>
<!-- フォームなどの内容 -->
<form method="post">
<!-- 入力項目 -->
</form>
@section Scripts {
<script>
document.addEventListener("DOMContentLoaded", function () {
// サーバーから渡されたフラグをチェック
var showPrompt = @((ViewBag.ShowCarryOverPrompt ?? false).ToString().ToLower());
if (showPrompt) {
// ダイアログ表示
alert("繰越金額を入力してください");
}
});
</script>
}
ポイント
日付判定はサーバー側で行う
→ クライアントの PC 時刻に依存せず、正確な条件判定が可能。
ViewBag / ViewData / Model でフラグを渡す
→ Razor で JavaScript に埋め込む。
alert の代わりにモーダルも可能
→ Bootstrap モーダルや SweetAlert2 などを使えば、より見やすい UI にできる。
例:Bootstrap モーダルで表示する場合
@if (ViewBag.ShowCarryOverPrompt ?? false)
{
<div class="modal fade" id="carryOverModal" tabindex="-1" aria-hidden="true">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header">
<h5 class="modal-title">お知らせ</h5>
<button type="button" class="btn-close" data-bs-dismiss="modal"></button>
</div>
<div class="modal-body">
繰越金額を入力してください
</div>
</div>
</div>
</div>
<script>
document.addEventListener("DOMContentLoaded", function () {
var modal = new bootstrap.Modal(document.getElementById('carryOverModal'));
modal.show();
});
</script>
}
✅ この方法なら、毎月1日だけ Create ページを開いたときに確実にダイアログを出せます。
もし「月初の初回アクセス時だけ」など、さらに条件を絞りたい場合は、DB やセッションで記録して制御できます。
もし希望があれば、この処理を 「月初の初回アクセス時だけ」 に拡張したコードも作れますが、作成しますか?
そうすれば、同じ日に何度もダイアログが出るのを防げます。
Powered by Froala Editor