这里的新功能和相对较新的开发和非常新的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但它们似乎永远不会起作用。
任何帮助都很感激,我还没有提供足够的信息只是对我大喊大叫!
干杯 利安
答案 0 :(得分:0)
Ryan Wilson 是正确的 - 这是一个重复的问题。
感谢其他帖子中的 kmonty 为我解决这个问题。
供参考,以下对我有用。
这是一个适用于asp.net按钮对象的解决方案。在 前端,将这些属性添加到您的asp:Button定义:
<asp:Button ... OnClientClick="this.disabled=true;" UseSubmitBehavior="false" />
在后端,在click事件处理程序方法调用中,添加此代码 到最后(最好是在最后一个块中)
myButton.Enabled = true;