Je recommande quelque chose de ce genre, même si l'image vit à l'intérieur de votre modèle.
Je me rends compte que vous demandez un moyen direct d'y accéder depuis la vue et beaucoup d'autres ont répondu à cette question et vous ont dit ce qui n'allait pas avec cette approche. C'est donc une autre façon de charger l'image de manière asynchrone pour vous et je pense que c'est une meilleure approche.
Modèle d'échantillon :
[Bind(Exclude = "ID")]
public class Item
{
[Key]
[ScaffoldColumn(false)]
public int ID { get; set; }
public String Name { get; set; }
public byte[] InternalImage { get; set; } //Stored as byte array in the database.
}
Méthode d'échantillonnage dans le contrôleur :
public async Task<ActionResult> RenderImage(int id)
{
Item item = await db.Items.FindAsync(id);
byte[] photoBack = item.InternalImage;
return File(photoBack, "image/png");
}
Voir
@model YourNameSpace.Models.Item
@{
ViewBag.Title = "Details";
}
<h2>Details</h2>
<div>
<h4>Item</h4>
<hr />
<dl class="dl-horizontal">
<img src="@Url.Action("RenderImage", new { id = Model.ID})" />
</dl>
<dl class="dl-horizontal">
<dt>
@Html.DisplayNameFor(model => model.Name)
</dt>
<dd>
@Html.DisplayFor(model => model.Name)
</dd>
</dl>
</div>