Я написал простое диалоговое окно jQuery, которое будет отображаться на панели asp, если вошедший в систему пользователь не сбросил свой пароль за последние 90 дней. Это прекрасно работает, однако, когда пользователь вводит свой пароль и нажимает «Подтвердить», чтобы вставить новый пароль в базу данных, родительская страница отправляет сообщение обратно до того, как на элементе управления произойдет событие click.
Вот как это настроено:
default.aspx
<asp:Panel ID="pnlTest" runat="server" Visible="false">
<div id="dialog" title="Password must be reset">
<cms:ResetPassword runat="server" ID="reset" />
</div>
</asp:Panel>
ResetPassword.ascx:
<div style="overflow:auto; white-space:nowrap;">
<table class="tableChangePassword">
<tr>
<td>Current Password</td>
<td colspan="2"><asp:TextBox runat="server" ID="txtCurrentPass" TextMode="Password" /></td>
</tr>
<tr>
<td>New Password</td>
<td><asp:TextBox runat="server" ID="txtNewPass1" TextMode="Password" CssClass="newPass1" /></td>
</tr>
<tr>
<td>Verify New Password</td>
<td><asp:TextBox runat="server" ID="txtNewPass2" TextMode="Password" CssClass="newPass2" /></td>
</tr>
<tr>
<td colspan="2">
</td>
</tr>
<tr>
<td colspan="3"><asp:LinkButton runat="server" ID="lbUpdatePass" Text="Submit" onclick="lbUpdatePass_Click" /></td>
</tr>
</table>
<asp:Label runat="server" ID="lblMSG" />
</div>
СброситьПароль кода:
public partial class ResetPassword : UserControl
{
protected void lbUpdatePass_Click(object sender, EventArgs e)
{
string newPass = txtNewPass1.Text;
string confirmNewPass = txtNewPass2.Text;
if (newPass == confirmNewPass)
{
MembershipUser user = AuthenticatedUser.GetMembershipProvider().GetUser(AuthenticatedUser.LoginUserID, false);
if (user != null)
{
string resetPsw = user.ResetPassword();
user.ChangePassword(resetPsw, newPass);
lblMSG.Text = "Password Changed Successfully";
}
}
}
}
Всякий раз, когда я нажимаю кнопку, чтобы сменить пароль, страница по умолчанию вызывает обратный вызов и закрывает текст, который был введен для смены пароля, поэтому, когда вызывается функция щелчка, строки проходят как "" и выдает ошибку.