为什么asp.net onclick事件在单击按钮时不更改按钮文本?

为什么asp.net onclick事件在单击按钮时不更改按钮文本?,asp.net,Asp.net,显然,我是一个彻头彻尾的傻瓜,这对你们中的一些人来说很简单,但我不明白为什么其余的子项可以工作,但是按钮1.Text=“上传,请稍候…”似乎被完全忽略了 该按钮应该在单击时更改文本,但我尝试过的任何方法都不能用于我的页面 有什么想法吗?这是我的简单上传表单页面: <%@ Page aspcompat=true %> <% ' import all relevant namespaces %> <%@ import namespace="System" %>

显然,我是一个彻头彻尾的傻瓜,这对你们中的一些人来说很简单,但我不明白为什么其余的子项可以工作,但是按钮1.Text=“上传,请稍候…”似乎被完全忽略了

该按钮应该在单击时更改文本,但我尝试过的任何方法都不能用于我的页面

有什么想法吗?这是我的简单上传表单页面:

<%@ 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>


按钮单击事件方法正在服务器上执行,而不是在浏览器中执行。

为了获得想要的效果,您需要用javascript编写客户端函数,最好使用javascript框架,如jquery,因此,此按钮文本更改发生在浏览器中,然后事件被激发回服务器进行处理。

我实际上已尝试将javascript添加到此按钮,但在该按钮类型上也被忽略。解决方案非常难以捉摸,但一旦我弄明白,就很简单了。您只需将OnClientClick=“this.value=”上传,请稍候…”添加到按钮。然后,您可以在提交表单之前更改按钮的文本。希望这对其他人有帮助,因为我在这上面浪费了至少2个小时@AmazingChase:您可以提交您的解决方案作为问题的答案,以帮助其他有相同问题的人。