0

我正在使用 ASP.NET Membership 提供程序并使用密码恢复控件在用户忘记密码时重置用户密码。总的来说,一切都很好,但在验证方面有一个问题。

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

OnUserLookupError="PasswordRecovery1_UserLookupError"

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

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

如果我先单击提交按钮,然后按回车键,它确实会触发,这只是第一次没有,并且仅在 IE 中。

还要补充一点,如果我在 VB 代码中设置断点以检查页面是否正在提交,我可以在Page_Load按 enter 键时看到事件触发,但看不到 sub PasswordRecovery1_UserLookupError

有没有其他人看过这个?它看起来像 IE 中的一个错误(不是真的???),但我需要确定它。

欢迎任何帮助。

4

1 回答 1

0

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

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

编辑:

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

Me.Form.DefaultButton = PasswordRecovery1.UserNameTemplateContainer.FindControl("SubmitButton").UniqueID
于 2011-03-30T09:51:31.893 回答