2009-06-02 5 views
3

J'ai des liens sur une page d'accueil qui peut ou non avoir des pièces jointes associées. Si les liens ont des pièces jointes, une icône sera placée à côté du lien. L'icône ne sera présente que si le lien contient une pièce jointe.Comment modifier l'attribut ImageUrl d'une image lors du chargement de la page avec asp.net et C# dans IE

protected void Page_Load(object sender, EventArgs e) 
    { 
     foreach (Image pic in imgAttachment) 
      { 
       int type = ds.Current_Events[index].AttachmentID; 
       //ds is the dataset 

La boucle foreach traverse chacune des photos de l'événement « en cours » sur la page d'accueil puis obtenir le type de pièce jointe associée à chaque lien alias le AtachmentID. Le paramètre AttachmentID peut être 0, 1, 2 ou 3, ce qui signifie qu'aucune pièce jointe, photo ci-jointe, vidéo jointe ou document ne sont attachés de manière répétée.

Une instruction switch est ensuite utilisée pour modifier l'attribut ImageUrl en image correspondante.

    switch (type) 
        { 
          case 0: 
           break; 
          case 1: 
           pic.ImageUrl = "images/eventicons/Photo.jpg"; 
           //changed from just "Photo.jpg" 
           break; 
          case 2: 
           pic.ImageUrl = "images/eventicons/Video.jpg"; 
           //changed from just "Video.jpg" 
           break; 
          case 3: 
           pic.ImageUrl = "images/eventicons/Doc.jpg"; 
           //changed from just "Doc.jpg" 
           break; 
          default: 
           pic.Visible = false; 
           break; 
         } 
        index++; 
      } 
    } 

L'image ne se charge pas dans IE, cependant cela fonctionne pour firefox.

Ce qui suit est l'avant ASPX

<div> 
    <ul> 
    <li> 
     <asp:HyperLink ID="lblEvent1" runat="server">    
      <img src="images/bar_blank.gif" /> 
     </asp:HyperLink> 
     <asp:Image ID="Image1" runat="server" /> 
    </li> 
    <li> 
     <asp:HyperLink ID="lblEvent2" runat="server"> 
      <img src="images/bar_blank.gif" /> 
     </asp:HyperLink> 
     <asp:Image ID="Image2" runat="server" /> 
    </li> 
    </ul> 
</div> 

Répondre

0

Je compris le problème.

Les images que j'utilisais étaient presque 500kb. J'ai supposé que la taille de l'espace disque des images était petite parce que les images elles-mêmes étaient petites mais ce n'était pas vrai. J'ai redimensionné les images et les ai descendues à environ 40ko. Les images se chargent maintenant dans ie. Donc, il semble y avoir un problème si vous changez le ImageUrl d'un contrôle d'image dans asp.net pendant le chargement de la page et que le fichier image que vous pointez est grand (500kb).

La solution est de faire l'image elle-même prendre moins d'espace disque en le redimensionnant, ce qui en fait un gif, ect ..

1

Vous devez ajouter le chemin complet à vos images. Au lieu de

pic.ImageUrl = "Photo.jpg"; 

vous pouvez le faire pour avoir ASP.Net écrire sur le chemin de la photo et ...

pic.ImageUrl = "~/MyImagePath/Photo.jpg"; 
+0

J'ai fait le changement mais cela n'a pas chargé l'image dans ie –

+0

Je vois que vous avez mis à jour le code dans votre question - utilisez-vous le tilde? Cela indiquera à asp.net d'écrire le chemin complet de l'image lors de son rendu, plutôt que d'essayer d'utiliser le parent. –

+0

Nous avons couru dans des instances où il était nécessaire de faire cela: pic.ImageUrl = Page.ResolveClientUrl ("~/MyImagePath/Photo.jpg") Je pense que nous ajoutions le contrôle de l'image à la page du code -derrière. –

0

Qu'est-ce que le code html tel regard est produit à partir de votre code? Pourriez-vous poster ceci comme il ya des problèmes connus avec la façon dont IE et firefox rendent les images en fonction de la façon dont vous référencez votre image. Serait bon de voir le rendu ainsi que votre code derrière.

+0

a été modifié pour inclure le code HTML –

Questions connexes