2016-12-02 8 views
0

Ich habe ein einfaches Webformular, um das Passwort des aktuellen Benutzers zu ändern, so habe ich drei TextBoxes, eine für das eigentliche Passwort, und zwei, nur um das neue Passwort zu bestätigen, die ich möchte sparen. Wenn ich versuche, mein aktuelles Passwort zu schreiben und es ist das gleiche, das ich in meiner Datenbank habe, die TextBox, um das neue Passwort zu schreiben soll nur aktiviert werden, und es tut, aber ich legte einen Debug-Punkt auf meinem TextChanged Ereignis, es feuert diese Zeit um meine TextBox zu aktivieren, aber fast sofort, es feuert ein zweites Mal, ich habe meine zweite TextBox aktiviert, aber ich verliere den Text, den ich ursprünglich in meinem ersten TextBox hatte.C# Textchanged Ereignis auf Asp.net wird zweimal ausgelöst

Irgendwelche Ideen, warum könnte das sein? "Txt_passwordnueva.Enabled = true;"

protected void txt_passvieja_TextChanged(object sender, EventArgs e) 
    { 
     usuario_BLL bll = new usuario_BLL(); 
     usuario obj = new usuario(); 
     obj = bll.Leer(Session["usuario"].ToString()); 
     if (txt_passvieja.Text == obj.passwordUsuario) 
     { 
      txt_passwordnueva.Enabled = true; 
     } 
     else 
     { 
      lbl_header.Text = "Error"; 
      lbl_body.Text = "La contraseña ingresada no coincide con la base de datos"; 
      Page.ClientScript.RegisterStartupScript(this.GetType(), "myFunction", "myFunction()", true); 
      Limpiar(); 
     } 
    } 

Das ist also mein Textchanged-Ereignis, ich habe einen Debug-Punkt in meinem hinzugefügt und wenn ich den Text ändere, sehe ich, dass er dieses Ereignis zweimal ausführt. Dies ist ein Webformular, das eine MasterPage verwendet. Beachten Sie, dass dies die einzige Form ist, in der ich dieses Problem habe.

Das ist meine Aspx-Code:

<%@ Page Title="" Language="C#" MasterPageFile="~/MasterPage.Master" AutoEventWireup="true" CodeBehind="CambiarContraseña.aspx.cs" Inherits="LegalCaseWeb.CambiarContraseña" %> 
<%@ Register Assembly="AjaxControlToolkit" Namespace="AjaxControlToolkit" TagPrefix="ajaxToolkit" %> 
<asp:Content ID="Content1" ContentPlaceHolderID="head" runat="server"> 
    <link href="css/login.css" rel="stylesheet" type="text/css" /> 
    <script type="text/javascript"> 
     function myFunction() { 
      $("#contraseña_incorrecta").modal('show'); 
     } 
    </script> 
</asp:Content> 
<asp:Content ID="Content2" ContentPlaceHolderID="ContentPlaceHolder1" runat="server"> 
    <div style="text-align:center; background-color: #ffffff; position: absolute; top: 50%; left: 50%; transform: translate(-50%, -50%);"> 
     <asp:Label ID="lbl_passvieja" runat="server" Text="Contraseña actual: " CssClass="labels"></asp:Label> 
     <asp:TextBox ID="txt_passvieja" runat="server" TextMode="Password" CssClass="textbox" AutoPostBack="true" BackColor="#efefef" OnTextChanged="txt_passvieja_TextChanged"></asp:TextBox> 
     <br /> 
     <br /> 
     <asp:Label ID="lbl_passwordnueva" runat="server" Text="Nueva contraseña: " CssClass="labels"></asp:Label> 
     <asp:TextBox ID="txt_passwordnueva" TextMode="Password" runat="server" AutoPostBack="true" BackColor="#efefef" OnTextChanged="txt_passwordnueva_TextChanged"></asp:TextBox> 
     <br /> 
     <br /> 
     <asp:Label ID="lbl_confirmar" runat="server" Text="Confirme nueva contraseña: " CssClass="labels"></asp:Label> 
     <asp:TextBox ID="txt_confirmar" TextMode="Password" runat="server" AutoPostBack="true" BackColor="#efefef" OnTextChanged="txt_confirmar_TextChanged"></asp:TextBox> 
     <br /> 
     <br /> 
     <asp:Button ID="btn_cambiar" runat="server" Text="Cambiar contraseña" AutoPostBack="true" OnClick="btn_cambiar_Click" /> 
    </div> 
    <div id="contraseña_incorrecta" class="modal fade" role="dialog"> 
     <div class="modal-dialog"> 
      <!-- Modal content--> 
      <div class="modal-content"> 
       <div class="modal-header"> 
        <button type="button" class="close" data-dismiss="modal">&times;</button> 
        <h4 class="modal-title"><asp:Label ID="lbl_header" runat="server"></asp:Label></h4> 
       </div> 
       <div class="modal-body"> 
        <p><asp:Label ID="lbl_body" runat="server"></asp:Label></p> 
       </div> 
       <div class="modal-footer"> 
        <button type="button" class="btn btn-default" data-dismiss="modal">Close</button> 
       </div> 
      </div> 
     </div> 
    </div> 
</asp:Content> 
+0

Sie können den Code teilen, um zu sehen, was das Ereignis zweimal auslöst. Nicht nur 'TextChanged', sondern auch wo immer Sie die Textbox verwenden –

+2

Bitte fügen Sie eine [MCVE] bei, um Ihr Problem zu demonstrieren. Eventuell gibt es einen Event-Handler, der zweimal verdrahtet ist, was die doppelte Auslösung des Ereignisses verursacht. – t0mm13b

+0

getan, tut mir leid, ich bin ein Neuling hier –

Antwort

0

ich herausgefunden habe, was mit meinem Code falsch war, und es ist, dass, wenn der Textmodus auf „Passwort“ gesetzt ist, ASP löscht automatisch beliebigen Text in das haben Textfeld. Um eine Lösung zu machen, was ich tat dies war:

string pass = txt_password.Text; 
txt_password.Attributes.Add("value", pass); 

Ich habe diese beiden Zeilen Code, bevor mein Textchanged Ereignis endet, so auf diese Weise, auch wenn es das Postback ausführt, ist es nicht mein Text löscht.

Verwandte Themen