ASP.NET 4密码恢复验证仅在IE中失败

时间:2011-03-30 08:58:01

标签: asp.net vb.net .net-4.0 membership-provider password-recovery

我正在使用ASP.NET成员资格提供程序并使用密码恢复控件重置用户密码,如果他们忘记了密码。总的来说,一切都运行良好,但在验证时只有一个问题。

我已将PasswordRecovery控件扩展为使用模板功能来自定义外观,这一切都很好。我使用以下方法设置了用户查找错误处理程序:

OnUserLookupError="PasswordRecovery1_UserLookupError"

在开始标记中,如果我加载页面,请键入一些垃圾名称,然后在所有浏览器中按预期单击提交此项目。 VB代码片段使得错误div可见并设置了一些文本。

但是,如果在第一次加载页面时,我在用户名框中输入duff名称并按Enter键提交表单,在Internet Explorer(版本8)中,UserLookupError事件无法触发。它在Chrome或Firefox中触发得很好,而不是在IE中。我知道这不是表单上的焦点问题,因为我可以看到表单正在提交。

如果我先点击提交按钮,然后按下输入键,它就会触发,这只是第一次没有,只有在IE中。

另外要补充一点,如果我在VB代码中设置断点以检查页面是否正在提交,我可以看到Page_Load事件在我按下回车键时触发,而不是子PasswordRecovery1_UserLookupError事件。 1}}。

有没有人见过这个?它看起来像IE中的一个错误(没有真正的???),但我需要把它钉下来。

欢迎任何帮助。

1 个答案:

答案 0 :(得分:0)

好的,经过一些挖掘和测试后,这实际上只是一个默认的按钮问题。我不确定当在框中输入文本后按下回车键时(仅在IE中)发生了什么,因为它正在重新加载页面但没有提交它。页面上没有其他控件或功能可以导航回或刷新此页面。

尽管提交按钮看起来是默认按钮,但它实际上并非如此。因此,关键是设置webform的defaultbutton属性。但是,当按钮位于PasswordRecovery控件内时,这是另一个问题。

修改

这是修复。在页面加载阶段设置默认按钮。

Me.Form.DefaultButton = PasswordRecovery1.UserNameTemplateContainer.FindControl("SubmitButton").UniqueID