記事詳細


投稿日
2026年06月09日19時25分
タイトル

ASP.NET MVC: wwwroot配下のImagesフォルダー内のファイル名(複数)をControllerのメソッドでnew SelectList()を作成するサンプルはありますか?

内容

はい、ASP.NET Core MVC で wwwroot/Images フォルダー内のファイル名を取得し、
SelectList に変換して View に渡すサンプルコードを作成できます。

以下は 完全に動作するサンプル です。

Controller サンプル

Csharp
using Microsoft.AspNetCore.Mvc; using Microsoft.AspNetCore.Mvc.Rendering; using System.IO; using System.Linq; namespace YourApp.Controllers { public class ImageController : Controller { private readonly IWebHostEnvironment _env; public ImageController(IWebHostEnvironment env) { _env = env; } public IActionResult Index() { // wwwroot/Images フォルダーの絶対パスを取得 string imagesPath = Path.Combine(_env.WebRootPath, "Images"); // フォルダーが存在しない場合は空のリストを返す if (!Directory.Exists(imagesPath)) { ViewBag.ImageList = new SelectList(Enumerable.Empty<string>()); return View(); } // 対象拡張子のファイルを取得(jpg, png, gif) var files = Directory.EnumerateFiles(imagesPath) .Where(f => new[] { ".jpg", ".jpeg", ".png", ".gif" } .Contains(Path.GetExtension(f).ToLower())) .Select(f => Path.GetFileName(f)) // ファイル名のみ .ToList(); // SelectList を作成(Value と Text を同じにする例) ViewBag.ImageList = new SelectList(files); return View(); } } }

View (Index.cshtml) サンプル

Razor
@{ ViewData["Title"] = "Image Select"; } <h2>画像選択</h2> <form method="post"> <select asp-items="ViewBag.ImageList" name="selectedImage"></select> <button type="submit">送信</button> </form>

ポイント

  1. IWebHostEnvironment.WebRootPath を使うことで wwwroot の物理パスを取得できます。
  2. Directory.EnumerateFiles() でファイル一覧を取得し、拡張子フィルタをかけています。
  3. Path.GetFileName() でファイル名だけを抽出し、SelectList に変換しています。
  4. View 側では asp-items を使って簡単に <select> を生成できます。

もし ファイル名だけでなく画像のURLも Value にしたい 場合は、
以下のように変更できます。

Csharp
var files = Directory.EnumerateFiles(imagesPath) .Where(f => new[] { ".jpg", ".jpeg", ".png", ".gif" } .Contains(Path.GetExtension(f).ToLower())) .Select(f => new { FileName = Path.GetFileName(f), Url = "/Images/" + Path.GetFileName(f) }) .ToList(); ViewBag.ImageList = new SelectList(files, "Url", "FileName");

このコードを使えば、wwwroot/Images 内のファイル名を動的に取得してドロップダウンに表示できます。
必要なら、このまま選択した画像をプレビュー表示する機能も追加できます。

もしご希望なら、このサンプルに 選択した画像を即時プレビューする JavaScript 付きバージョン を作成できますが、作りますか?

Powered by Froala Editor

添付画像

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