2011-12-10 63 views
4

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,即使图片存在。 我也试过用'\'代替'/',但没有工作

我该怎么做?

感谢您的帮助

回答

13

你需要相对文件路径转换为物理文件路径,以便File.Exists正常工作。

你将要使用Server.MapPath验证文件是否存在:

if(File.Exists(Server.MapPath("/images/items/"+item.Name+".jpg"))) 

此外,当您使用使用Server.Mappath,你通常应该指定斜线,这样的要求是相对于网络应用程序的目录。

如果您没有提供前导斜杠,则将生成相对于当前正在处理的页面的路径,并且如果此页面位于子目录中,则将无法进入图像文件夹。

+0

非常感谢! – Youssef

+1

如果你的虚拟目录不在你的网站下,你应该使用〜而不是/。请参阅http://stackoverflow.com/questions/275781/server-mappath-server-mappath-server-mappath-server-mappath – zero7

+0

是的,我用它。谢谢 – Youssef