ASP.NET Membership控制重置密码回发错误

时间:2011-03-11 15:30:02

标签: c# .net asp.net asp.net-membership postback

我编写了一个简单的jQuery对话框,如果登录用户在过去90天内没有重置密码,它将出现在asp面板中。这很好用,但是当用户输入密码并按下提交以将新密码插入数据库时​​,父页面会在用户控件上触发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>

ResetPassword Codebehind:

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";
            }
        }
    }
}

每当我点击按钮更改密码时,默认页面都会调用回发,它会删除输入的文本来更改密码,因此当调用click函数时,字符串会以“”形式出现,它会引发错误。

1 个答案:

答案 0 :(得分:1)

我在测试项目中实现了上面的内容,并且它正常工作。 lbUpdatePass_Click事件在文本框的每个文本属性中具有正确的值。您是否在父或子Page_Load事件中有代码操作那些文本字段?您没有在上面显示的任何其他代码?