Bonjour à tous,
J'essaye de construire un site ( un Trombinoscope ) ou chaque personne enregistrée dans ma base de donnée peut avoir une image qui joue le rôle d'avatar sur le site...
Mon probleme consiste à récuperer le bon avatar pour chaque personne, j'ai reussi à recuperer tous les champs d'informations enregistrées dans la base au préalable ( nom, prenom , email..) mais pour l'image ce n'est pas possible car j'arrive pas à afficher un avatar dynamique : j'ai réussit à afficher l'image récupérée depuis la base si je lui fais un appel direct mais si je veux l'afficher selon l'identifiant de la personne ça passe pas :
c-à-d :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
<asp:Image runat="server"  ImageUrl="~/Handler1.ashx?=1" Width="120" h="120" />
: m'affiche bien l'image de la personne qui a l'identifiant 1

mais
Code : Sélectionner tout - Visualiser dans une fenêtre à part
<asp:Image runat="server"  ImageUrl=<%: "~/Handler1.ashx?=1" Model.id %> Width="120" h="120" />
ne donne rien

ci dessous mon code pour le handler.ashx.cs :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.IO;
using System.Data.SqlClient;
using System.Data;
 
namespace Trambinoscope
{
    /// <summary>
    /// Summary description for Handler1
    /// </summary>
    public class Handler1 : IHttpHandler
    {
 
        public void ProcessRequest(HttpContext context)
        {
 
            Int32 empno;
            if (context.Request.QueryString["id"] != null)
                empno = Convert.ToInt32(context.Request.QueryString["id"]);
            else
                throw new ArgumentException("No parameter specified");
 
            context.Response.ContentType = "image/jpg";
 
            Stream strm = ShowEmpImage(empno);
            byte[] buffer = new byte[4096];
            int byteSeq = strm.Read(buffer, 0, 4096);
 
            while (byteSeq > 0)
            {
                context.Response.OutputStream.Write(buffer, 0, byteSeq);
                byteSeq = strm.Read(buffer, 0, 4096);
            }
            //context.Response.BinaryWrite(buffer);
        }
 
        public Stream ShowEmpImage(int empno)
        {
 
            string conn = @"Data Source=.\SQLEXPRESS;AttachDbFilename=C:\Users\Mehdi\Documents\Visual Studio 2010\Projects\Trambinoscope\Trambinoscope\App_Data\EspritDB.mdf;Integrated Security=True;User Instance=True";
            SqlConnection connection = new SqlConnection();
            connection.ConnectionString = conn;
            string sql = "SELECT photo FROM ESPRITS WHERE id = @id";
            SqlCommand cmd = new SqlCommand(sql, connection);
            cmd.CommandType = CommandType.Text;
            cmd.Parameters.AddWithValue("@id", empno);
            connection.Open();
            object img = cmd.ExecuteScalar();
            try
            {
                return new MemoryStream((byte[])img);
            }
            catch
            {
                return null;
            }
            finally
            {
                connection.Close();
            }
        }
        public bool IsReusable
        {
            get
            {
                return false;
            }
        }
 
    }
}
et la le code de la page
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
<%@ Page Title="" Language="C#" MasterPageFile="~/Views/Shared/Site.Master" Inherits="System.Web.Mvc.ViewPage<Trambinoscope.Models.ESPRIT>" %>
 
 
<asp:Content ID="Content1" ContentPlaceHolderID="TitleContent" runat="server">
	Details
 
</asp:Content>
 
<asp:Content ID="Content2" ContentPlaceHolderID="MainContent" runat="server">
 
    <h2>Details</h2>
 
    <fieldset>
        <legend><%: Model.prenom%> <%: Model.nom%></legend>
 
        <div class="display-label">Promotion : <%: Model.promotion%></div>
 
        <div class="display-label">Email : <%: Model.email%></div>
 
        <div class="display-label">Employeur : <%: Model.employeur%></div>
 
        <div class="display-label">Annee d'entrée : <%: Model.anneeEntree%></div>
 
        <div class="display-label">Telephone:  <%: Model.telephone%></div>
 
  <asp:Image runat="server"  ImageUrl=<%  "~/Handler1.ashx?=" Model .id%> Width="120" h="120" />
 
 
    </fieldset> 
    <p>
 
        <%: Html.ActionLink("Modifier", "Edit", new { id = Model.id })%> |
        <%: Html.ActionLink("Retour à la liste Liste", "Index")%>
    </p>
 
</asp:Content>
Merci pour votre aide