記事詳細


投稿日
2026年08月31日00時17分
タイトル

ASP.NET Core MVC:Create.cshtmlにアクセス時、「追加するアイコンを選択してください」Yes,No,というSweetAlert2 を使ったモーダルダイアログを表示し、<input type="file" id="upFile" name=”upFile” class="form-control" />の画像ファイル情報から、<form asp-action="Create">内にある<input asp-for="CourseName" class="form-control" />に画像の「拡張子を除いた名前」を設定し、 <input asp-for="ImageUrl" class="form-control" />には、“/Images/”+ 画像ファイル名を設定するjqueryのコードを教えてください。 「No を押した場合はフォーム送信を無効化」 する処理も教えてください。

内容

了解です。
以下に ASP.NET Core MVC の Create.cshtml で、

  • ページアクセス時に SweetAlert2 の「追加するアイコンを選択してください」Yes/No モーダルを表示
  • Yes の場合、#upFile の画像ファイル名から
    • CourseName に拡張子を除いた名前を設定
    • ImageUrl に /Images/ + ファイル名を設定
  • No の場合、フォーム送信を無効化

する jQuery + SweetAlert2 のサンプルコードを示します。

Create.cshtml(抜粋)

Cshtml
@model YourNamespace.Models.Course @{ ViewData["Title"] = "Create"; } <!-- SweetAlert2 CSS & JS --> <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/sweetalert2@11/dist/sweetalert2.min.css"> <script src="https://cdn.jsdelivr.net/npm/sweetalert2@11"></script> <form asp-action="Create" id="createForm"> <div class="form-group"> <label asp-for="CourseName"></label> <input asp-for="CourseName" class="form-control" /> </div> <div class="form-group"> <label asp-for="ImageUrl"></label> <input asp-for="ImageUrl" class="form-control" /> </div> <div class="form-group"> <label for="upFile">画像ファイル</label> <input type="file" id="upFile" name="upFile" class="form-control" accept="image/*" /> </div> <button type="submit" class="btn btn-primary">登録</button> </form> @section Scripts { <script src="https://code.jquery.com/jquery-3.6.0.min.js"></script> <script> $(function () { let allowSubmit = false; // No選択時に送信を止めるフラグ // ページロード時にSweetAlert2表示 Swal.fire({ title: '追加するアイコンを選択してください', icon: 'question', showCancelButton: true, confirmButtonText: 'Yes', cancelButtonText: 'No' }).then((result) => { if (result.isConfirmed) { allowSubmit = true; // ファイル選択イベントでCourseNameとImageUrlを設定 $('#upFile').on('change', function () { const file = this.files[0]; if (file) { const fileName = file.name; const baseName = fileName.substring(0, fileName.lastIndexOf('.')) || fileName; $('#CourseName').val(baseName); $('#ImageUrl').val('/Images/' + fileName); } }); } else { allowSubmit = false; Swal.fire({ icon: 'info', title: 'キャンセルされました', text: 'フォーム送信は無効化されます。' }); } }); // フォーム送信時の制御 $('#createForm').on('submit', function (e) { if (!allowSubmit) { e.preventDefault(); Swal.fire({ icon: 'warning', title: '送信できません', text: 'Noを選択したため送信は無効です。' }); } }); }); </script> }

ポイント解説

  1. SweetAlert2 の Yes/No
    • showCancelButton: true でキャンセルボタンを No として利用
    • result.isConfirmed が Yes 選択時
  2. ファイル名から拡張子を除去
    Js
    const baseName = fileName.substring(0, fileName.lastIndexOf('.')) || fileName;
  3. フォーム送信制御
    • allowSubmit フラグで Yes/No の選択結果を保持
    • No の場合は e.preventDefault() で送信を阻止
  4. ImageUrl の設定
    • /Images/ + ファイル名を自動設定

✅ このコードを使えば、

  • ページアクセス時に必ずモーダルが出て
  • Yes の場合のみファイル選択で自動入力
  • No の場合は送信不可

が実現できます。

もし「ページアクセス時ではなく、ファイル選択時にモーダルを出す」仕様に変更したい場合も簡単にできますが、このままアクセス時表示で進めますか?

Powered by Froala Editor

添付画像

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