簡體   English   中英

如何從 ASP.NET MVC 中的多個文件夾中獲取文件?

[英]How can I get files from multiple folders in ASP.NET MVC?

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並僅顯示該文件夾的文件

將您的循環更改為:編輯

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;

您在循環中所做的只是返回最終圖像,因為每次迭代都會覆蓋結果。

實際上,上面的代碼在每次循環迭代后覆蓋文件夾名稱,並將最后一個類別名稱提供給 Viewbag.Images 並僅顯示該文件夾的文件

您可以嘗試使用List<IEnumerable<string>>來存儲所有文件夾及其文件名

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>

 }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM