【问题标题】:ASP.NET Membership controls reset password postback errorASP.NET Membership 控件重置密码回发错误
【发布时间】:2011-03-11 15:30:02
【问题描述】:

我编写了一个简单的 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>

重置密码.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";
            }
        }
    }
}

每当我单击按钮更改密码时,默认页面都会调用回发,它会将输入更改密码的文本清空,因此当单击函数被调用时,字符串会以“”的形式出现,并且它会引发错误。

【问题讨论】:

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


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 2011-06-18
      • 2011-02-12
      • 2017-06-02
      • 1970-01-01
      • 2011-12-02
      • 2010-12-15
      • 1970-01-01
      • 1970-01-01
      • 2016-03-20
      相关资源
      最近更新 更多