You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在ASP.NET Core MVC中获取wwwroot下Images文件夹的子文件夹

获取wwwroot/Images下的子文件夹并传递到视图

你需要把Directory.GetFiles替换为Directory.GetDirectories来获取子文件夹,同时注意不要在控制器构造函数里处理ViewBag(构造函数中无法访问ViewBag),应该在具体的Action方法中完成逻辑。

修正后的代码示例:

private readonly IWebHostEnvironment _hostingEnvironment;
private string _mainDirectory;

public TestController(IWebHostEnvironment hostingEnvironment)
{
    _hostingEnvironment = hostingEnvironment;
    // 用WebRootPath直接拼接主目录路径,更简洁
    _mainDirectory = Path.Combine(_hostingEnvironment.WebRootPath, "images");
}

public IActionResult Index()
{
    // 获取Images目录下的所有子文件夹路径
    string[] subDirectories = Directory.GetDirectories(_mainDirectory);
    // 提取子文件夹的名称(而非完整物理路径)
    var folderNames = subDirectories.Select(dir => Path.GetFileName(dir)).ToArray();
    // 将文件夹名存入ViewBag,供视图使用
    ViewBag.ImageFolders = folderNames;
    
    return View();
}

关键说明

  • 替换Directory.GetFiles为Directory.GetDirectories:这个方法专门用于获取指定目录下的子文件夹路径
  • 提取文件夹名称:用Path.GetFileName(dir)只拿最后一级文件夹名,避免把服务器物理路径暴露到视图
  • 逻辑放在Action中:ViewBag是Action上下文的一部分,控制器构造函数无法访问它,必须在具体的Action方法(比如Index)中赋值

视图中使用示例(以Index.cshtml为例)

<div>
    <h3>Images下的子文件夹:</h3>
    <ul>
        @foreach (var folder in ViewBag.ImageFolders as string[])
        {
            <li>@folder</li>
        }
    </ul>
</div>

内容的提问来源于stack exchange,提问作者user17847724

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.15 21:15:43