画像をアップロード/表示する Web サイトを作成しようとしています (MVC4 を使用)。サーバーの App_Data\Images フォルダーの下にローカルに保存されている画像を取得するために、以下のコードを作成しました。画像のパスは、モデルの ImageFile プロパティに格納されます。
ビューはさまざまな画像の ID、キャプションをレンダリングしますが、画像は読み込まれません。イメージ ファイルは、ImageFile プロパティに対して保存されたパスに存在します。どうすればこれを修正できますか?
//モデル
public class Photo
{
public int ID { get; set; }
public string ImageFile { get; set; } //This contains a path where the image is locally stored on the server
public string Caption { get; set; }
byte[] Image { get; set; }
}
//コントローラ
private PhotoDBContext db = new PhotoDBContext();
public ActionResult Index()
{
return View(db.Photos.ToList());
}
//意見
@model IEnumerable<MyPhotoLibrary.Models.Photo>
<table>
@foreach (var item in Model) {
<tr>
<td>
<img src="@Url.Content(item.ImageFile)" alt="" />
</td>
<td>
@Html.DisplayFor(modelItem => item.Caption)
</td>
</tr>
}
</table>
また、(ファイルを物理的に保存してファイル パスを使用する代わりに) イメージをバイト配列として保存する場合、イメージを再作成してビューに表示するにはどうすればよいですか。つまり、ビューでモデルを反復処理しながら、バイト配列から画像を再作成するにはどうすればよいですか?
編集
以下を実行することで表示の問題を解決できました(両方が必要です)-1)パスを相対パスに変更しました2)画像をApp_Data以外の別のフォルダーに移動しました。(これを見つけた)
ありがとう。