2016-12-02 1 views
0

현재 웹 사용자의 암호를 변경하기위한 간단한 Webform이 있으므로 실제 암호로는 TextBoxes, 입력하려는 새 암호는 두 번만 입력하면됩니다. 구하다. 내 암호를 쓰려고 할 때 데이터베이스에있는 암호가 같을 때 새 암호를 쓸 수있는 TextBox이 사용 가능하도록 설정되어 있지만 실제로는 TextChanged 이벤트에 디버그 지점을 넣으면 해당 시간에 실행됩니다 내 TextBox을 사용하도록 설정했으나 거의 즉시 두 번째로 실행됩니다. 내 초는 TextBox으로 설정되어 있지만 처음에는 원래 있던 텍스트가 손실됩니다. TextBox.Asp.net에서 Textchanged 이벤트가 두 번 실행 중임

왜 그런가?

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(); 
     } 
    } 

그래서이 내의 TextChanged 이벤트 내에서 디버그 포인트를 추가한다 "txt_passwordnueva.Enabled = TRUE;" 텍스트를 변경하면이 이벤트가 두 번 실행되는 것을 볼 수 있습니다. 이것은 MasterPage를 사용하는 Webform입니다.이 웹 양식은이 문제가있는 유일한 양식입니다.

내 영문 코드입니다 : 내 코드를 잘못 무엇인지 발견

<%@ 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

이벤트를 두 번 실행하는 코드를 공유 할 수 있습니까? TextChanged뿐만 아니라 텍스트 상자를 사용하는 곳도 –

+2

문제를 설명하기 위해 [MCVE]를 동봉하십시오. 이벤트 처리기가 두 번 유선되어 이벤트가 두 번 실행되는 경우가 있습니다. – t0mm13b

+0

완료되었습니다. 죄송합니다. 여기는 초보자입니다. –

답변

0

, 그리고 그것은 텍스트 모드가 설정되어있는 경우 "비밀번호"에, ASP는 자동으로한다는 점에서이 텍스트를 지 웁니다이다 텍스트 상자. 이 무슨 내가 한 해결책하려면 :

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

을 나는 그것이 다시 게시를 실행하는 경우에도 그 방법으로, 그래서 내 텍스트가 삭제되지 않습니다, 내의 TextChanged 이벤트를 종료하기 전에이 두 줄의 코드를 추가했습니다.

관련 문제