ASP.Net MVC Comment afficher une propriété d'image d'un modèle dans une vue?
-
05-07-2019 - |
Question
Je suis nouveau sur asp.net mvc, mais j'essaie de faire une application amusante avec GDI + et je dois faire un affichage d'image avec asp.net mvc.
J'ai un modèle qui a une propriété d'image:
namespace DomainModel.Entities
{
public class BackgroundImage
{
// Properties
public Image Image {get; private set; }
public BackgroundImage()
{
Image = Image.FromFile(@"D:\ProjectZero\DomainModel\image\bkg.PNG");
}
}
}
Le contrôleur envoie à la vue les éléments suivants:
public ActionResult Index()
{
BackgroundImage bkImg = new BackgroundImage();
return View(bkImg);
}
La vue ressemble à ceci:
<p> Height: </p><%= Model.Image.Height //it prints the height of the image %> </br>
<p> Width: </p><%= Model.Image.Width //it prints the width %> </br>
<p> Image: </p><%= Model.Image //does not work to display the image %>
Comment afficher cette propriété d'image?
J'ai besoin de cette image d'arrière-plan pour une div. Je n'ai pas besoin de redimensionner l'image, je n'ai besoin que de l'afficher à sa taille normale.
Existe-t-il un Helper HTML qui me manque?
Merci pour votre temps!
La solution
Vous devez écrire une action du contrôleur qui écrira l'image dans le flux de réponses et définira le type de contenu approprié avec le libellé "image / png". Vous pouvez ensuite utiliser la balise img
pour référencer cette action dans votre vue:
public ActionResult Image()
{
byte[] image = GenerateImage();
return File(image, "image/png");
}
Et dans votre vue:
<img src="<%= Url.Action("Image") %>" alt="" />
Autres conseils
Vous aurez besoin d'un gestionnaire HttpHandler si vous voulez faire des choses comme celle-ci.