Получить список файлов из View, ASP.NET Core razor

Изучаю ASP.NET Core, есть такой код для закидывания файла в папку wwwroot/Files и для скачивания его оттуда

@model IEnumerable<FileUploadApp.Models.FileModel>
@{
    ViewData["Title"] = "Добавление файла";
}
<h3>Выберите файл для загрузки</h3>
<form asp-action="AddFile" asp-controller="Home" method="post" enctype="multipart/form-data">
    <input type="file" name="uploadedFile" /><br>
    <input type="submit" value="Загрузить" />
</form>

<h3>Получить файл</h3>
<form asp-action="GetFile" asp-controller="Home" method="get" enctype="multipart/form-data">
    <input type="submit" value="Получить" />
</form>

Внутри контроллера соответственно есть связанные методы

   [HttpPost]
   public async Task<IActionResult> AddFile(IFormFile uploadedFile)
   {
            if (uploadedFile != null)
            {
                string path = "/Files/" + uploadedFile.FileName;
                using (var fileStream = new FileStream(_appEnvironment.WebRootPath + path, FileMode.Create))
                {
                    await uploadedFile.CopyToAsync(fileStream);
                }
                FileModel file = new FileModel { Name = uploadedFile.FileName, Path = _appEnvironment.WebRootPath + path };
                _context.Files.Add(file);
                _context.SaveChanges();
            }

            return RedirectToAction("Index");
   }

   public IActionResult GetFile()
   {
            string file_path = _appEnvironment.WebRootPath + "/Files/" + "5.jpg";
            string file_type = "application/octet-stream"
            string file_name = "5.jpg";
            return PhysicalFile(file_path, file_type, file_name);
   }

И теперь вопрос - если я хочу отобразить во вьюшке кнопки для скачки каждого файла из папки Files, как мне получить во вьюшке список всех файлов, которые есть в папке Files?

Я конечно могу сделать в контроллере новый метод, внутри которого будет что то вроде

 DirectoryInfo d = new DirectoryInfo(_appEnvironment.WebRootPath + "/Files/");
 return d.GetFiles();

И обращаться наверное как то из вьюшки к этому методу, но не еще же одним GET-запросом? Может есть какой то нормальный правильный способ получить из вьюшки данные о файлах внутри папки wwwroot/Files?


Ответы (0 шт):