ASP.NET Webform - 如何多次停止单击按钮

时间:2018-03-07 16:50:04

标签: c# asp.net webforms

这里的新功能和相对较新的开发和非常新的ASP。

我创建了一个WCF服务,其最终方法是将记录插入SQL表并调用电子邮件发送类。

在我使用该服务的ASP网页表单上,我有一个调用其中一种方法的按钮。

我不理解并希望修复的方法,所有方法都需要大约10秒才能完成(我需要将其缩小,但这样可以进一步下线)。我可以在第一次点击有机会完成之前继续点击按钮,然后发送电子邮件。每次点击,它排队,在您知道之前,您有10个相同的电子邮件。

我想在方法返回之前禁用该按钮。

我花了一整天的时间试图解决这个问题并且看了多个论坛,什么都没有。所以任何帮助都表示赞赏。 - 我无法解决我失踪的问题。

服务方式;

public class A : IA
    {
        public int Set_A(string a, int t, string d, string c, int f)
        {
            using (var dbAbs = new Entities())
            {
                if (a != "" && d != "" && c != "")
                {
            // Do stuff - add to entity etc. 
                        if (tl != null)
                        {
                            try
                            {
                                SendMail(tl.TL_E, a, t, d, c, f);
                            }
                            catch (Exception ex)
                            {
                                throw new Exception(ex.Message);
                            }
                            Retval = dbAbs.SaveChanges();
                        }
                        else
                        {
                            retval = -99;
                        }
                        return retval;                   
                }
                else return -1;
            }
        }

按钮后面的代码点击网络表单;

protected void AddA_Click(object sender, EventArgs e)
{
    AddA.Enabled = false;
    AddA.Visible = false;
    var absvc = new AService.AClient();

// setting up variables

    int ret = absvc.Set_A(a, ab, d, c, f);

//error handling

    AddA.Enabled = true;
    AddA.Visible = true;
}

正如您所看到的,我已尝试使用.Enabled和.Visible但它们似乎永远不会起作用。

任何帮助都很感激,我还没有提供足够的信息只是对我大喊大叫!

干杯 利安

1 个答案:

答案 0 :(得分:0)

Ryan Wilson 是正确的 - 这是一个重复的问题。

感谢其他帖子中的 kmonty 为我解决这个问题。

供参考,以下对我有用。

  

这是一个适用于asp.net按钮对象的解决方案。在   前端,将这些属性添加到您的asp:Button定义:

<asp:Button ... OnClientClick="this.disabled=true;" UseSubmitBehavior="false" />
     

在后端,在click事件处理程序方法调用中,添加此代码   到最后(最好是在最后一个块中)

myButton.Enabled = true;