2010-09-10 6 views
1

Évidemment, je suis un noob total et c'est simple pour certains d'entre vous, mais je ne peux pas comprendre pourquoi le reste du sous fonctionne, mais le button1.Text = "Uploading, Please Wait ..." semble être complètement ignoré.Pourquoi l'événement asp.net onclick ne modifie-t-il pas le texte du bouton lorsque l'utilisateur clique sur le bouton?

Le bouton est censé changer de texte lorsque vous cliquez dessus, mais aucune méthode que j'ai essayé ne fonctionne avec ma page.

Des idées? Voici ma page simple formulaire de téléchargement:

<%@ Page aspcompat=true %> 

<% ' import all relevant namespaces %> 
<%@ import namespace="System" %> 
<%@ import namespace="System.Drawing" %> 
<%@ import namespace="System.Drawing.Imaging" %> 
<%@ import namespace="System.IO" %> 

<html>  
<head> 

<title>Photo 1 Upload</title> 

</head> 
<body bgcolor="#000000"> 

<p> 
<table align="center" bgcolor="white" cellpadding="5" cellspacing="2" border="2" width=""> 
    <tr> 
     <td align="center" valign="middle" nowrap bgcolor="554aa1"> 
      <font face="arial" color="white" size="5"> 
      <b>Click the "Browse..." button to select your 
      <br>photo then click "Upload"</b> 
      <p> 
      </font> 
      <font face="arial" color="white" size="4"> 
      Note: Image must be .jpg format and less than 4MB 
      </font> 
     </td> 
    </tr> 
    <tr> 
     <td align="center" valign="middle" bgcolor="#cccccc"> 

      <form id="form1" runat="server"> 
      <div> 
      <asp:FileUpload ID="FileUpload1" runat="server" /><br /> 
      <br /> 
      <asp:Button ID="Button1" runat="server" OnClick="Button1_Click" Text="Upload Photo" />&nbsp;<br /> 
      <br /> 
      <asp:Label ID="Label1" runat="server"></asp:Label></div> 
      </form> 
      <p> 
     </td> 
    </tr> 
</table> 

</body> 
</html> 

<script runat="server"> 

Protected Sub Button1_Click(ByVal sender As Object,ByVal e As System.EventArgs) 

    button1.Text="Uploading, Please Wait..." 

    If FileUpload1.HasFile Then 
     Try 
      Dim Ext 
      Ext = Lcase(Right(FileUpload1.PostedFile.FileName, 3)) 
      If Ext = "jpg" or Ext = "peg" Then 

      FileUpload1.SaveAs(Server.MapPath("..\" & Session("user_name") & "\photos\photo1_raw.jpg")) 
      response.redirect("done.asp?action=done&photo=1#photos") 
      Label1.Text = "File name: " & _ 
      FileUpload1.PostedFile.FileName & "<br>" & _ 
      "File Size: " & _ 
      FileUpload1.PostedFile.ContentLength & " kb<br>" & _ 
      "Content type: " & _ 
      FileUpload1.PostedFile.ContentType 

      Else 
      Label1.Text = "ERROR: Nothing Saved - Photo must be a .jpg or .jpeg format." 
      end if 

     Catch ex As Exception 
      Label1.Text = "ERROR: " & ex.Message.ToString() 
     End Try 
    Else 
     Label1.Text = "You have not specified a file." 
    End If 
End Sub 

</script> 

Répondre

2

Le bouton méthode de l'événement click est en cours d'exécution sur le serveur, et non pas dans le navigateur.
Pour obtenir l'effet que vous recherchez, vous devez écrire une fonction côté client en javascript, idéalement en utilisant un framework javascript tel que jquery, donc ce changement de texte de bouton se produit dans le navigateur avant que l'événement soit renvoyé au serveur. En traitement.

+0

J'ai effectivement essayé d'ajouter javascript à ce bouton mais il est également ignoré sur ce type de bouton. – AmazingChase

+2

La solution était très insaisissable, mais simple une fois que je l'ai compris. Vous venez d'ajouter OnClientClick = "this.value = 'Uploading, Please Wait ...'" au bouton. Ensuite, vous pouvez modifier le texte du bouton AVANT que le formulaire est soumis. J'espère que cela aide quelqu'un d'autre parce que j'ai perdu au moins 2 heures de ma vie là-dessus. :) – AmazingChase

+0

@AmazingChase: Vous pouvez soumettre votre solution comme réponse à la question pour aider d'autres personnes ayant le même problème. – Isaac

Questions connexes