简体   繁体   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();
}

I tried to upload it like this where category returns the folder names from the database of table tblDetails from where I want to get the files.我尝试像这样上传它,其中category从我想要获取文件的表tblDetails的数据库中返回文件夹名称。

Actually the above code overrides the folder name after every iteration of the loop and provides the last category name to the Viewbag.Images and only display the files of that folder实际上,上面的代码在每次循环迭代后覆盖文件夹名称,并将最后一个类别名称提供给Viewbag.Images并仅显示该文件夹的文件

Change your loop to something like: EDIT将您的循环更改为:编辑

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;

What you are doing in your loop is returning only the final image as the result will be over written on each iteration.您在循环中所做的只是返回最终图像,因为每次迭代都会覆盖结果。

Actually the above code overrides the folder name after every iteration of the loop and provides the last category name to the Viewbag.Images and only display the files of that folder实际上,上面的代码在每次循环迭代后覆盖文件夹名称,并将最后一个类别名称提供给 Viewbag.Images 并仅显示该文件夹的文件

You could try to use List<IEnumerable<string>> to store all folders with their file names您可以尝试使用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;

Then in your view, you could display them as a group like然后在您看来,您可以将它们显示为一个组,例如

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

 }

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 如何通过浏览文件夹在 asp.net mvc 应用程序中获取文件夹路径 - How can i get folder path in asp.net mvc app by browsing folders 如何从带有Request.Form的ASP.NET MVC中的选择(多个)中获取所有选择的选项? - How can i get all selected options from a select (multiple) in as ASP.NET MVC with Request.Form? 如何将某些视图和文件夹排除在已部署的ASP.NET MVC NuGet包中? - How can I exclude some views and folders from being included into the deployed ASP.NET MVC NuGet package? 如何在ASP.NET MVC 4中保存多个ViewModel? - How can I save multiple ViewModels in ASP.NET MVC 4? 如何从ASP.NET MVC 4网站获取文件和表单值? - How do I get files AND form values from an ASP.NET MVC 4 website? 我怎样才能让这个 ASP.NET MVC SelectList 工作? - How can I get this ASP.NET MVC SelectList to work? 如何在ASP.NET MVC中获取ViewBag值? - How can I get ViewBag value in ASP.NET MVC ? 如何从ASP.NET MVC中的SQL Server数据库向多个收件人发送电子邮件? - How can I send email to multiple recipients from SQL Server database in ASP.NET MVC? 如何从ASP.NET MVC Project中的输入类型“文件”中获取文件名? - How can i get filename from input type “file” in ASP.NET MVC Project? 如何从ASP.NET MVC获取完整的Facebook个人资料 - How can I get full facebook profile from ASP.NET MVC
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM