net / C#应用程序我有项目列表。
在后面的代码中: 我想为每个项目分配本地资源的图片。项目名称和图片名称相同。 这些图片都在我项目的“图像”文件夹中。
我如何将图片分配给项目的示例:
Item1.PictureUrl = "images/items/" + item1.Name + ".jpg";
我有没有照片的物品。我想为他们分配一张默认图片。
我试图用这个来检查图片是否存在:
foreach(ObjectItem item in ListOfItems)
{
if(File.Exists("images/items/"+item.Name+".jpg"))
item.PictureUrl = "images/items/"+item.Name+".jpg";
else
item.PictureUrl= "images/Default.jpp";
}
但是File.Exists方法总是返回false,即使图片存在也是如此。 我也尝试使用'\'而不是'/'但不起作用
我该怎么做?
感谢您的帮助
答案 0 :(得分:16)
您需要将相对文件路径转换为物理文件路径,以便File.Exists正常工作。
您需要使用Server.MapPath来验证文件是否存在:
if(File.Exists(Server.MapPath("/images/items/"+item.Name+".jpg")))
此外,当您使用Server.MapPath时,通常应指定前导斜杠,以便请求相对于Web应用程序的目录。
如果您没有提供前导斜杠,那么将相对于正在处理的当前页面生成路径,如果此页面位于子目录中,则无法访问图像文件夹。
答案 1 :(得分:1)
.Net Core解决方案
1-将其写在视图的顶部(在此处注入IHostingEnvironment);
@inject Microsoft.AspNetCore.Hosting.IHostingEnvironment hostingEnv
2-将此图像写入图像的位置(进行存在性检查);
var path = System.IO.Path.Combine(hostingEnv.WebRootPath, "MyFolder", "MyImage.jpg");
if (System.IO.File.Exists(path))
{
<img class="img-fluid" src="~/MyFolder/MyImage.jpg" alt="">
}
答案 2 :(得分:0)
var path = $@"C:\Fotos\Funcionarios\1.Png";
FileInfo file = new FileInfo(path);
if (file.Exists.Equals(true))
{
//faz algo
}