2011-12-10 3 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를 반환 : 사진이를 사용하여 존재하는 경우

나는 확인했습니다. '/'대신 '\'를 사용하려고했지만 작동하지 않았습니다.

어떻게해야합니까?

어떤 도움 당신은 File.Exists가 제대로 작동하기 위해서는 실제 파일 경로에 상대적인 파일 경로를 변환 할 필요가

답변

13

주셔서 감사합니다.

당신은 파일의 존재를 확인하기 위해 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

관련 문제