gpt4 book ai didi

asp.net - 遍历目录并使用 Razor 获取每个图像文件路径

转载 作者:行者123 更新时间:2023-12-05 04:15:13 26 4
gpt4 key购买 nike

我正在寻找一种基于 MVC5 razor 中的 URL 循环浏览我网站文件夹中图像的好方法。

网址的结构如下:
/Home/Media/Photos/Gallery/GALLERYNAME

我将以下内容添加到我的 RouteConfig 中:

    routes.MapRoute(
name: "Gallery",
url: "{controller}/Media/Photos/{action}/{galleryName}",
defaults: new { controller = "Home", action = "Index", galleryName = UrlParameter.Optional }
);

我的 HomeController 中有以下内容:

public ActionResult Gallery(string galleryName)
{
ViewBag.Message = galleryName;
return View();
}

现在,基于发送到我的画廊 View 的这个 ViewBag 值“galleryName”,我想遍历以下目录,以便我可以获得每张图像并将其显示以供灯箱查看:

“~/Content/img/Media/Photos/GALLERYNAME”

我不确定我是否应该直接在我的 View 中或在我的 Controller 的 Gallery ActionResult 中执行此循环,然后传递包含所有图像路径的字符串列表。当我在 Controller 中尝试使用 Directory.EnumerateFiles 时,我总是遇到问题。它正在我的 C 驱动器上搜索路径。我需要相对于我的站点的路径。有些事情告诉我,我可能需要创建一个虚拟目录来为此使用 System.IO。

如果有人想查看或评论,这是我的最终代码:

public ActionResult Gallery(string galleryName)
{
string galleryPath = Path.Combine(this.Server.MapPath(@"~/Content/img/Media/Photos"), galleryName);
var fullImagePaths = Directory.GetFiles(galleryPath);

string sitePath = "~/Content/img/Media/Photos/";
var imagePaths = fullImagePaths.Select(fp => sitePath + Path.GetFileName(fp));

return View(imagePaths);
}

这会生成一个可以直接进入 img src 属性的字符串列表:即 "~/Content/img/Media/Photos/myimage.jpg"

最佳答案

使用Server.MapPath为了得到~/Content/img/Media/Photos的物理路径。然后将它与画廊名称结合起来。

我个人会在您的 Controller 中执行此操作,为您的 View 提供文件列表(可能转换为某种 View 模型),但您也可以在您的 View 中执行此操作:

public ActionResult Gallery(string galleryName)
{
string galleryPath = Path.Combine(
this.Server.MapPath(@"~/Content/img/Media/Photos"),
galleryName);

//loop through images in the gallery folder and create list of images
var images = ...

return View(images);
}

关于asp.net - 遍历目录并使用 Razor 获取每个图像文件路径,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32911619/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com