フォームの編集や登録を新規ページではなく、モーダルウィンドウで完結させたいと考えたことはありませんか?ASP.NET MVCとBootstrapの組み合わせで、見た目も操作感も優れたUIを実装することが可能です。本記事では、モーダルでのデータ表示・編集・保存をC#のMVCフレームワークと連携させる具体的な方法を解説。実務で使える構成と、知っておきたい注意点も押さえています。
Bootstrapモーダルの基本構造と役割
モーダルウィンドウは、ユーザーに特定のアクションを求めるときに最適なUI要素です。ページ遷移を伴わず、現在の画面上に重ねて表示されるため、操作の流れを中断させることなく、効率的に情報の提示やフォーム入力を実現できます。ASP.NET MVCとの連携においても、フォームの編集や新規登録の場面で特に力を発揮します。
✅ Bootstrapモーダルの構造の基本ポイント
- HTMLで完結する柔軟な構造:モーダルは
<div class="modal">
をベースに構築されており、ヘッダー、本文(body)、フッターを自由にカスタマイズ可能です。 - JavaScriptで表示・非表示を制御:
$('#myModal').modal('show')
といったシンプルな呼び出しで、動的に開閉を制御できます。 - フォームや警告、確認ダイアログにも応用可能:フォーム部品を配置すればデータ入力モーダルに、簡単なテキストとボタンだけでアラート表示も可能です。
✅ HTML構造の例
<!-- モーダルの基本構造 -->
<div class="modal fade" id="myModal" tabindex="-1" role="dialog">
<div class="modal-dialog" role="document">
<div class="modal-content">
<div class="modal-header">
<h5 class="modal-title">編集フォーム</h5>
<button type="button" class="close" data-dismiss="modal">×</button>
</div>
<div class="modal-body">
<!-- ここにフォームや内容を記述 -->
</div>
<div class="modal-footer">
<button type="button" class="btn btn-secondary" data-dismiss="modal">閉じる</button>
<button type="button" class="btn btn-primary">保存</button>
</div>
</div>
</div>
</div>
このように、モーダルはHTMLとBootstrapの標準コンポーネントだけで手軽に作成できます。これが、業務システムのような頻繁なデータ操作UIで支持される大きな理由です。次のセクションでは、これをASP.NET MVCとどう連携させるかを具体的に解説します。
ASP.NET MVCとモーダルの連携方法(基本構成)
業務アプリケーションでは、一覧ページ上で「登録」「編集」「削除」などの操作を完結させたい場面がよくあります。BootstrapモーダルをASP.NET MVCと連携することで、画面遷移なしの効率的なUIが実現可能です。ここでは、その典型的な構成をファイル単位で紹介します。
✅ 使用構成
Index.cshtml
(一覧表示+モーダル呼び出し)_EditModal.cshtml
(部分ビュー:編集フォーム)ItemController.cs
(GET/POSTアクション)
✅ Index.cshtml(一覧ページ)
@model IEnumerable<SampleApp.Models.Item>
<table class="table">
<thead>
<tr><th>名前</th><th>操作</th></tr>
</thead>
<tbody>
@foreach (var item in Model)
{
<tr>
<td>@item.Name</td>
<td>
<button class="btn btn-primary editBtn" data-id="@item.Id">編集</button>
</td>
</tr>
}
</tbody>
</table>
<!-- モーダル -->
<div class="modal fade" id="editModal" tabindex="-1" role="dialog">
<div class="modal-dialog" role="document">
<div class="modal-content"></div>
</div>
</div>
<script>
$(document).on("click", ".editBtn", function () {
var id = $(this).data("id");
$.get('/Item/Edit/' + id, function (data) {
$('#editModal .modal-content').html(data);
$('#editModal').modal('show');
});
});
$(document).on("submit", "#editForm", function (e) {
e.preventDefault();
$.post('/Item/Edit', $(this).serialize(), function (result) {
if (result.success) {
location.reload(); // 保存成功なら再読み込み
} else {
$('#editModal .modal-content').html(result); // エラー時は再表示
}
});
});
</script>
✅ _EditModal.cshtml(部分ビュー:編集フォーム)
@model SampleApp.Models.Item
<form id="editForm">
@Html.HiddenFor(m => m.Id)
<div class="modal-header">
<h5 class="modal-title">編集</h5>
<button type="button" class="close" data-dismiss="modal">×</button>
</div>
<div class="modal-body">
<div class="form-group">
@Html.LabelFor(m => m.Name)
@Html.TextBoxFor(m => m.Name, new { @class = "form-control" })
@Html.ValidationMessageFor(m => m.Name)
</div>
</div>
<div class="modal-footer">
<button type="submit" class="btn btn-primary">保存</button>
<button type="button" class="btn btn-secondary" data-dismiss="modal">キャンセル</button>
</div>
</form>
✅ ItemController.cs(コントローラー)
public class ItemController : Controller
{
private readonly IItemRepository _repo;
public ItemController(IItemRepository repo)
{
_repo = repo;
}
public ActionResult Index()
{
var items = _repo.GetAll();
return View(items);
}
[HttpGet]
public ActionResult Edit(int id)
{
var item = _repo.GetItem(id);
return PartialView("_EditModal", item);
}
[HttpPost]
public ActionResult Edit(Item model)
{
if (ModelState.IsValid)
{
_repo.Update(model);
return Json(new { success = true });
}
return PartialView("_EditModal", model);
}
}
✅ 補足ポイント
PartialView
をモーダルの中に読み込むことで、UIの一貫性を保ちつつ柔軟にデータ操作が可能になります。- POST処理後、JSONでレスポンスを返すと、JavaScript側で成功/失敗の制御がしやすくなります。
- 入力チェック(バリデーション)もASP.NET MVCの標準機能をそのまま活用できます。
このような構成をベースにすれば、拡張も容易で保守性も高く、業務システムで求められるUI/UXにしっかり対応できます。
まとめ:モーダルの導入でUIと操作性を一歩先へ
ASP.NET MVCとBootstrapモーダルを組み合わせることで、ページ遷移なしでデータの編集・登録・削除を完結できる、洗練されたユーザーインターフェースを実現できます。とくに、管理画面や業務システムのようなデータ操作の頻度が高いアプリケーションでは、UXの質が大きく向上します。
✅ モーダル導入の主なメリット
- 画面遷移の削減:ユーザーが一覧ページにとどまりながら、すばやく操作を完了できる。
- UIの一貫性:同一画面上で操作が完結するため、使いやすさと直感性が向上。
- 再利用可能な部分ビュー:Partial Viewの活用で、共通化・保守性の高い設計が可能。
✅ おすすめの適用シーン
- CRUD操作が頻繁なデータ一覧ページ
- 確認ダイアログ(削除確認など)のカスタマイズ
- ステータス変更・詳細編集などのインライン操作
ただし、モーダルの中でバリデーションを扱う場合や、複雑なフォーム構成を持つ場合は、非同期通信の処理フローやエラーハンドリングを丁寧に設計することが重要です。
Bootstrapモーダルの導入により、単なる見た目の向上だけでなく、実務に即した高効率なインターフェースを提供できます。小さな改善が、大きなユーザー満足と作業効率の向上につながります。ぜひプロジェクトに取り入れてみてください。
コメント