【问题标题】:How can I get files from multiple folders in ASP.NET MVC?如何从 ASP.NET MVC 中的多个文件夹中获取文件?
【发布时间】:2020-02-08 10:55:42
【问题描述】:
public ActionResult DisplayFiles()
{
    var getCategory = dbcontext.tblDetails.Select(x => x.Category).Distinct().ToList();
    ViewBag.Category = getCategory;

    foreach (string category in getCategory)
    {
        ViewBag.Images = Directory.EnumerateFiles(Server.MapPath("~/" + category)).Select(fn => "~/" + category + "/" + Path.GetFileName(fn));
    }

    return View();
}

我尝试像这样上传它,category 从表 tblDetails 的数据库中返回文件夹名称,我想从其中获取文件。

实际上,上面的代码在每次循环迭代后都会覆盖文件夹名称,并将最后一个类别名称提供给 Viewbag.Images 并且只显示该文件夹的文件

【问题讨论】:

    标签: c# .net asp.net-mvc asp.net-core


    【解决方案1】:

    将您的循环更改为: 编辑

    List<string> images = new List<string>;
    foreach (string category in getCategory)
    {
        images.AddRange(Directory.EnumerateFiles(Server.MapPath("~/" + category))
                   .Select(fn => "~/" + category + "/" + Path.GetFileName(fn)).ToList());
    }
    ViewBag.Images = images;
    
    

    您在循环中所做的只是返回最终图像,因为结果将在每次迭代时被覆盖。

    【讨论】:

    • 显示编译时错误,指定 无法将 'System.Collections.Generic.JEnumerable' 转换为字符串
    • 抱歉,缺少ToList()
    • 我看到了,但它仍然没有帮助
    • 在什么方面没有帮助?您的网页中是否有一些示例数据和预期的输出。更多细节会有所帮助。
    【解决方案2】:

    实际上,上述代码在每次循环迭代后都会覆盖文件夹名称,并将最后一个类别名称提供给 Viewbag.Images 并仅显示该文件夹的文件

    您可以尝试使用List&lt;IEnumerable&lt;string&gt;&gt; 来存储所有文件夹及其文件名

    var data = new List<IEnumerable<string>>();
    
    foreach (string category in getCategory)
    {
        var images = Directory.EnumerateFiles(Server.MapPath("~/" + category)).Select(fn => "~/" + category + "/" + Path.GetFileName(fn));
        data.Add(images);
    }
    ViewBag.Images = data;
    

    然后在您的视图中,您可以将它们显示为一个组,例如

    @foreach( var folder in ViewBag.Images)
    {      
        <ul>
            @foreach (var image in folder)
            {
                <li>@image</li>
            }
        </ul>
    
     }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-06-04
      • 2016-10-09
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多