单击事件时按钮属性不会更改

时间:2014-03-10 12:56:40

标签: c# asp.net button postback

这可能很简单,但是,当页面有效时,按钮文字和启用状态不会改变。

我在网络表单上有一个按钮,以及保存点击事件后面的代码:

if (Page.IsValid) {
    btnSave.Enabled = false;
    btnSave.Text = "Saving, please wait...";

    // Save method, etc...        
}

2 个答案:

答案 0 :(得分:2)

您首先设置Button Enabled状态和Text,然后运行保存方法。

这一切都发生在服务器端,在按钮单击引起的请求中。在您运行Save方法之前,客户端浏览器不会收到完整的响应。

如果您希望在运行Save方法之前更改Button,则必须使用JavaScript在客户端执行此操作。

答案 1 :(得分:0)

我猜你试图禁止用户在处理过程中反复点击“保存”按钮。

但是代码是在服务器端编写的,浏览器最后只会得到响应。 要实现您要执行的操作,您需要在客户端禁用该按钮。

这可以使用javascript和处理按钮的onClientClick事件来完成。

阅读:http://encosia.com/disable-a-button-control-during-postback/

<asp:Button runat="server" ID="BtnSubmit" 
  OnClientClick="this.disabled = true; this.value = 'Submitting...';" 
  UseSubmitBehavior="false" 
  OnClick="BtnSubmit_Click" 
  Text="Submit Me!" />

注意:这适用于完整的回发,而不适用于启用ajax的方案。

编辑:试试这个

<asp:Button ID="Button1" UseSubmitBehavior="false" 
    runat="server" Text="Button" OnClientClick="DisableAfterValidation(this)" OnClick="Button1_Click" />

<script>
        function DisableAfterValidation(btn) {

            if (typeof (Page_ClientValidate) == 'function') {
                var isPageValid = Page_ClientValidate();
                if (isPageValid) {                        
                    btn.disabled = true;
                    btn.value = "please wait...";
                }
            }
        }
</script>