2010-03-20 5 views

Répondre

4

Vous pouvez créer une page HttpHandler (ashx) qui prendrait un querystring et définir que la propriété imageUrl du contrôle d'image

<asp:image id="imgEmployee" imageUrl="DisplayImage.ashx?employeeId=<someId>"/> 

maintenant à displayimage. ashx, vous pouvez remplacer les processRequest comme ci-dessous: -

public void ProcessRequest (HttpContext context) 
    { 
      int employeeId; 
      if (context.Request.QueryString["employeeId"] != null) 
    employeeId = Convert.ToInt32(context.Request.QueryString["employeeId"]); 
      else 
      throw new ArgumentException("No parameter specified"); 

     byte[] imageData= ;// get the image data from the database using the employeeId Querystring 
     Response.ContentType = "image/jpeg"; // You can retrieve this also from the database 
     Response.BinaryWrite(imageData); 

    } 

changements Web.config: -

<httpHandlers> 
    <add verb="*" path="img/*" type="DisplayImage"/> 
</httpHandlers> 

Détails here et here.

Hope this helps ..

+0

Je pense que vous avez mal compris la question. Je dois montrer l'image dans le contrôle d'image d'asp.net non seulement sur la page Web. – HotTester

+0

@HotTester, le code/concept ci-dessus afficherait l'image dans le contrôle IMG. Pour expliquer plus, supposons que vous avez une page (EmployeeDetails.aspx) où vous avez le contrôle de l'image, dont imageUrl est "DisplayImage.ashx? EmployeeId = 12". Lorsque vous demandez la page "EmployeeDetails.aspx" et que le contrôle de l'image est rendu, une requête sera envoyée à DisplayImage.ashx (un HttpHandler) qui va juste sortir les données binaires pour l'image et ensuite cela sera affiché dans le contrôle Image de Employee.aspx. Faites le moi savoir Si j'ai encore mal compris votre question. –

0

Cela peut aussi se faire sans la création d'un gestionnaire.

//get the image from the database as byte array 
byte[] image = (byte[])dr["image"]; 

//set the ImageUrl of the Image Control as a Base64 string 
Image1.ImageUrl = "data:image/jpeg;base64," + Convert.ToBase64String(image) 

Ou si vous voulez avec et hauteur aussi, créer un Image en utilisant un MemoryStream et obtenir les propriétés de l'image.

using (MemoryStream ms = new MemoryStream(image)) 
{ 
    System.Drawing.Image imageFromDB = System.Drawing.Image.FromStream(ms); 

    Image1.ImageUrl = "data:image/jpeg;base64," + Convert.ToBase64String(image); 
    Image1.Width = imageFromDB.Width; 
    Image1.Height = imageFromDB.Height; 
} 
Questions connexes