簡體   English   中英

Asp.net上的C#Textchanged事件觸發兩次

[英]c# Textchanged event on Asp.net is firing twice

我有一個簡單的Webform來更改當前用戶的密碼,所以我有三個TextBoxes ,一個用於實際密碼,另外兩個用於確認我要保存的新密碼。 當我嘗試寫入實際密碼時,和我在數據庫中輸入的密碼相同時,應該僅啟用用於寫入新密碼的TextBox ,並且確實可以,但是我在TextChanged事件上放置了一個調試點,它觸發了該時間為了啟用我的TextBox ,但幾乎立即觸發,第二次啟用了我的第二個TextBox ,但是我丟失了最初在第一個TextBox擁有的TextBox

任何想法為什么會這樣?

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,請注意,這是我遇到此問題的唯一形式。

這是我的Aspx代碼:

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

我發現我的代碼出了什么問題,並且是當Textmode設置為“ password”時,ASP會自動刪除該Textbox中的所有文本。 為了解決這個問題,我要做的是:

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

我在結束TextChanged事件之前添加了這兩行代碼,因此,即使執行回發,也不會刪除我的文本。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM