我正在使用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中的一个错误(没有真正的???),但我需要把它钉下来。
欢迎任何帮助。
答案 0 :(得分:0)
好的,经过一些挖掘和测试后,这实际上只是一个默认的按钮问题。我不确定当在框中输入文本后按下回车键时(仅在IE中)发生了什么,因为它正在重新加载页面但没有提交它。页面上没有其他控件或功能可以导航回或刷新此页面。
尽管提交按钮看起来是默认按钮,但它实际上并非如此。因此,关键是设置webform的defaultbutton
属性。但是,当按钮位于PasswordRecovery
控件内时,这是另一个问题。
修改强>
这是修复。在页面加载阶段设置默认按钮。
Me.Form.DefaultButton = PasswordRecovery1.UserNameTemplateContainer.FindControl("SubmitButton").UniqueID