我有一个表单,其中有一个用于电子邮件的文本框和许多其他文本框。
该电子邮件具有与先前输入的电子邮件不匹配的功能,但可以为空白。

我在文本框的文本更改事件处触发了代码,并且工作正常。
但是,当我单击更新按钮而没有将光标从文本框移开时。
单击该按钮不起作用。仅文本框的textchanged事件触发其他事件。

请同样帮我。

 string emailid = txtemail.Text;
var emailcnt2 = (from r in context.Customers
                                 where r.Email == Convert.ToString(emailid)
                                 select r).SingleOrDefault();

                if (emailcnt2 != null)
                {
                    lblemail.Text = "Email already exists for customer " + emailcnt2.FirstName + " " + emailcnt2.LastName + "";
                    //  emaildisplay.Attributes.Add("style", "display:block;");
                    txtemail.Focus();
                }

最佳答案

我查看了出现此问题的项目,“ hack”是将文本框放在UpdatePanel内,似乎在大多数情况下都可以使用(当按钮单击不触发时,我进行了测试,但是很少,实际上非常罕见)。

我不能确切地说出它为什么起作用,我没有一个确定或有效的解释,但是可能是因为UpdatePanel发出了自己的请求,而表单提交只是另一个请求。

进一步讲,我正在尝试对这种行为进行解释。似乎在更改文本时会触发TextChanged事件(搞笑,不是吗?)。如果是这种情况,即文本已更改,我们希望此事件在onblur时刻触发,但是当单击其他按钮时,可能由ASP .Net生成的javascript检查文本是否更改,然后提交表单以触发此事件事件。现在,单击按钮已丢失,因为不能两次提交表单。

现在,UpdatePanel带来的是它有责任触发TextChanged事件,因此现在照常触发了按钮单击。

关于c# - 事件未触发,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/9837527/

10-11 22:43
查看更多