Я пытаюсь создать подкласс управления восстановлением пароля в asp.net (4), чтобы я мог переопределить поведение события OnVerifyingUser, но у меня возникли проблемы с добавлением моего элемента управления восстановлением подклассов на страницу. Я попытался создать элемент управления asp: placeholder и добавить в него новый экземпляр моего подкласса, но я просто получаю сообщение об ошибке «Запись с таким же ключом уже существует». Я пытался сделать это в методах page_init и page_load, но получаю ту же ошибку.
Вот пример моего подкласса
Partial Class MyPasswordReminder
Inherits PasswordRecovery
Protected Overrides Sub OnVerifyingUser(e As System.Web.UI.WebControls.LoginCancelEventArgs)
MyBase.OnVerifyingUser(e)
'Do my stuff here
End Sub
End Class
А вот как я добавляю его на страницу.
Private Sub Page_Init(sender As Object, e As System.EventArgs) Handles Me.Init
Dim passwordRecoveryControl As New MyPasswordReminder
passwordRecoveryControl.ID = "passwordRecoveryControl1"
Placeholder1.Controls.Add(passwordRecoveryControl)
End Sub
Код пользовательского интерфейса просто:
<asp:Panel runat="server" ID="pnlMakeDefault" >
<asp:Placeholder ID="Placeholder1" runat="server"/>
</asp:Panel>
Во время выполнения я получаю следующую ошибку:
Ошибка источника по умолчанию: 2: запись с
тот же ключ уже существует. Вход
с таким же ключом уже существует.
Полная ошибка:
Запись с таким же ключом уже
существует. Описание: необработанный
исключение произошло во время
выполнение текущего веб-запроса.
Пожалуйста, просмотрите трассировку стека для более
информация об ошибке и где
он возник в коде.
Сведения об исключении:
System.ArgumentException: запись
с таким же ключом уже существует.
Ошибка источника:
Создано необработанное исключение
во время исполнения текущего
веб-запрос. Информация относительно
Происхождение и место исключения
можно определить с помощью исключения
трассировка стека ниже.
Трассировка стека:
[ArgumentException: запись с
тот же ключ уже существует.]
System.Collections.Specialized.ListDictionary.Add (Объект
ключ, значение объекта) + 7952083
System.Web.UI.ClientScriptManager.RegisterExpandoAttribute (String
controlId, String attributeName,
String attributeValue, логическое кодирование)
+337 System.Web.UI.ScriptRegistrationManager.RegisterExpandoAttribute (Control
control, String controlId, String
attributeName, String attributeValue,
Логическое кодирование) + 115
Кто-нибудь знает почему? Я подозреваю, что это как-то связано с проверочными элементами в базовом классе элемента управления восстановлением пароля, но я немного растерялся относительно того, как действовать.