7

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 を返します。また、「/」の代わりに「\」を使用しようとしましたが、機能しませんでした

どうすればいいですか?

助けてくれてありがとう

4

3 に答える 3

18

File.Exists が正しく機能するためには、相対ファイル パスを物理ファイル パスに変換する必要があります。

ファイルの存在を確認するには、Server.MapPathを使用します。

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

また、Server.MapPath を使用する場合は、通常、先頭のスラッシュを指定して、要求が Web アプリケーションのディレクトリに対して相対的になるようにする必要があります。

先頭のスラッシュを指定しない場合、処理中の現在のページを基準にしてパスが生成され、このページがサブディレクトリにある場合は、イメージ フォルダーにアクセスできません。

于 2011-12-10T01:01:50.147 に答える