2013-05-13 3 views
0

Sur En cliquant sur le LinkButton, j'actualise l'image dans le contrôle d'image sans actualiser la page. Pour cela, j'ai utilisé les UpdatePanel et AsyncPostBackTrigger.UpdatePanel ne fonctionne que sur Chrome et non sur IE/Mozilla. Pourquoi?

Il fonctionne parfaitement en chrome. Mais pas dans IE et Mozilla. Sur IE et Mozilla lorsque je clique sur le bouton de lien, rien ne se passe. Regarde très bizarre. Avez-vous la moindre idée à ce sujet?

<asp:UpdatePanel ID="UpdatePanel1" runat="server" UpdateMode="Conditional"> 
    <ContentTemplate> 
     <asp:TextBox ID="txtCaptchaInput" BorderStyle="Solid" Style="vertical-align: top" runat="server" Width="106px" BorderWidth="1px"></asp:TextBox> 
     <asp:Image ID="img_captcha" runat="server" Height="32px" ImageUrl="~/captchaJPEG.aspx" Width="108px" /> 
     <asp:LinkButton ID="captcha_refresh" runat="server">Refresh Image</asp:LinkButton> 
    </ContentTemplate> 
    <Triggers> 
     <asp:AsyncPostBackTrigger ControlID="captcha_refresh" /> 
    </Triggers> 
</asp:UpdatePanel> 

CaptchaJPEG.aspx: chargement de la page

Dim captcha As New Captcha.CaptchaImage() 
    captcha.width = 150 
    captcha.height = 40 
    captcha.text = Me.Session("CaptchaText").ToString() 
    captcha.GenerateImage() 
    captcha.image.Save(Me.Response.OutputStream, System.Drawing.Imaging.ImageFormat.Jpeg) 
+0

Vérifiez les erreurs de javascript que vous obtenez! De plus, le bouton de lien n'appelle aucune fonction! Peut-être que c'est le problème? – Aristos

+0

@Aristos Il n'y a pas d'erreur javascript dans Mozilla. Et le bouton Lien a un clic qui se déclenche correctement lorsque vous cliquez sur le bouton de lien dans Mozilla et Chrome. Le problème est que l'image ne change pas dans les navigateurs autres que mozilla – Anuya

+0

Alors peut-être que l'image reste sur le cache, et doit faire quelques trucs pour forcer la mise à jour. Et maintenant que je le vois mieux, vous utilisez une page pour envoyer une image. Mieux vaut utiliser un gestionnaire. – Aristos

Répondre

0

Votre question a à voir avec la mise en cache du captchaJPEG.aspx qui renvoient une image. Comme image le navigateur peut le garder et ne pas le changer.

Pour éviter que vous avez deux façons, vous pouvez définir des en-têtes de cache-à-dire au navigateur de garder pas le cache comme:

Response.Cache.SetExpires(DateTime.Now.AddDays(-10)); 
Response.Cache.SetMaxAge(new TimeSpan(-10, 0, 0)); 

Ou -Que je pense est un hasard ajouter un meilleur cours numéro sur l'étiquette d'image que vous avez définie sur le code derrière, comme:

img_captcha.ImageUrl = "~/captchaJPEG.aspx?_rnd=" + RandomNumber; 

ici vous pouvez faire quelque chose d'encore mieux, d'utiliser le hash() de votre code captcha, comme:

img_captcha.ImageUrl = "~/captchaJPEG.aspx?_rnd=" + CaptachHiddenNumbers.hash(); 

C'est comme ça que vous le gardez en cache si le captcha est le même de charger à charger. Maintenant, la "bonne façon" est d'utiliser un gestionnaire et non une page pour de nombreuses raisons, comme si vous ne voulez pas que tout le temps de la page soit juste pour envoyer une image. Maintenant the handler come with the minimum modules call, à add session you need to use the IRequiresSessionState. Pour répondre à la question, pourquoi agit différemment sur les navigateurs, parce que dans certains petits détails, le navigateur a un comportement différent, dépend de comment et de ce qu'ils vérifient pour prendre la décision d'utiliser les images mises en cache et à quel point les navigateur avec le cache.

+0

'AsyncPostBackTrigger' fonctionnera-t-il sans 'EventName'? –

+0

@majidgeek Je ne sais pas à ce sujet - je dois faire un test et voir si c'est le cas. Sur les commentaires sur la question est la revendication que c'est. (Voir le premier commentaire sur l'OP) Et parce que travailler sur un navigateur, alors peut-être n'est pas le problème, le cache si c'est sûr. – Aristos

+0

@Aristos J'ai ajouté l'expiration du cache, comme vous l'avez mentionné dans votre premier point dans le chargement de la page "captchajpeg.aspx" mais même cela ne fonctionne pas. Est-ce que je fais mal? – Anuya

Questions connexes