Отображение изображений в папке ядра asp.net динамически - PullRequest
0 голосов
/ 19 декабря 2018

Я пытаюсь отобразить все изображения в папке изображений, которые я сохранил в корневом файле.Я знаю, что они хранили метод Server.MapPath в ядре asp.net.Я не уверен, как бы я выполнял ту же функцию в ядре .net, создавая модель представления и имея возможность перебирать все изображения, хранящиеся в моей корневой папке изображений.Любые предложения будут великолепны.Ниже приведен пример кода, из которого я вышел, но он явно не работает для ядра .Net.

// model
class MyViewModel
{
    public IEnumerable<string> Images { get; set; }
}

// controller
public ActionResult MyAction()
{
    var model = new MyViewModel()
{
    Images = Directory.EnumerateFiles(Server.MapPath("~/images_upload"))
                      .Select(fn => "~/images_upload/" + 
   Path.GetFileName(fn))
};
return View(model);
}
// view
@foreach(var image in Model.Images)
  {
     <img src="@Url.Content(image)" alt="Hejsan" />
  }

1 Ответ

0 голосов
/ 19 декабря 2018

Вам нужно использовать IHostingEnvironment, который вы должны вставить в свой контроллер, если вы укажете его в конструкторе.

Затем вы можете использовать свойства (в зависимости от того, куда вы положили папку images_upload):

  • ContentRootPath - базовый путь приложения.Это расположение файла web.config, project.json
  • WebRootPath - физического пути к каталогу, в котором находятся файлы, предназначенные для просмотра.По умолчанию это папка wwwroot

Затем используйте System.IO.Path.Combine()

например

public class HomeController : Controller
{
    private IHostingEnvironment _env;
    public HomeController(IHostingEnvironment env)
    {
        _env = env;
    }

    public ActionResult MyAction()
    {
        var folderPath = System.IO.Path.Combine(_env.ContentRootPath, "/images_upload");
        var model = new MyViewModel()
        {
            Images = Directory.EnumerateFiles(folderPath)
                .Select(filename => folderPath + filename)
        };
        return View(model);
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...