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 :
<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
<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 :
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
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
Partager