C# 文本框。当用户向文本框中输入数据时,文本为空

C# 文本框。当用户向文本框中输入数据时,文本为空,c#,asp.net,C#,Asp.net,我尝试恢复用户在文本框中输入的内容 我创建访问器来公开我的文本框,因为我以前遇到过访问问题 以下是我的完整连接aspx.cs: public partial class ConnexionSaisieHeures : System.Web.UI.Page { /*Accesseurs*/ public string NomUtilisateur { get { return txtNomUtilisateur.Te

我尝试恢复用户在文本框中输入的内容

我创建访问器来公开我的文本框,因为我以前遇到过访问问题

以下是我的完整连接aspx.cs:

public partial class ConnexionSaisieHeures : System.Web.UI.Page
{
    /*Accesseurs*/

    public string NomUtilisateur
    {
        get
        {
            return txtNomUtilisateur.Text;
        }
        set
        {
            txtNomUtilisateur.Text = value;
        }
    }

    public string MotDePasse
    {
        get
        {
            return txtMotDePasse.Text;
        }
        set
        {
            txtMotDePasse.Text = value;
        }
    }

    /*Événements*/

    protected void Page_Load(object sender, EventArgs e)
    {
        ErreurConnexion.Visible = false;
        lblErreurConnexion.Text = "";
    }

    protected void btnConnexion_Click(object sender, EventArgs e)
    {
        if (Authentifier(txtNomUtilisateur.Text, txtMotDePasse.Text))
        {
            FormsAuthentication.RedirectFromLoginPage(txtNomUtilisateur.Text, false);
        }
        else
        {
            ErreurConnexion.Visible = true;
            lblErreurConnexion.ForeColor = System.Drawing.Color.Red;
            lblErreurConnexion.Text = "Erreur d'authentification : Le nom d'utilisateur ou le mot de passe est incorrect.";
        }
    }

    /*Méthodes*/

    /// <summary>
    /// Méthode permettant l'authentification des utilisateurs à l'application
    /// </summary>
    /// <param name="strNomUtilisateur">Nom de l'utilisateur saisi</param>
    /// <param name="strMotDePasse">Mot de passe saisi</param>
    /// <returns>Booléen vérifiant si l'authentification a été faite ou non</returns>

    private bool Authentifier(string strNomUtilisateur, string strMotDePasse)
    {
        bool bOk = false;
        // Cryptage du mot de passe
        strMotDePasse = FormsAuthentication.HashPasswordForStoringInConfigFile(strMotDePasse, "MD5");
        // Création d'une connexion SGBD
        SqlConnection oConnexion = new SqlConnection(Convert.ToString(ConfigurationManager.ConnectionStrings["SaisieHeuresConnectionString"]));
        // Définition de la requête à exécuter
        SqlCommand oCommand = new SqlCommand("SELECT * FROM Utilisateurs WHERE NomUtilisateur='" + strNomUtilisateur + "'", oConnexion);
        try
        {
            // Ouverture de la connexion et exécution de la requête
            oConnexion.Open();
            SqlDataReader drUtilisateur = oCommand.ExecuteReader();
            // Parcours de la liste des utilisateurs
            while (drUtilisateur.Read())
            {
                if (drUtilisateur["MotDePasse"].ToString() == strMotDePasse)
                {
                    bOk = true;
                    break;
                }
            }
        }
        catch
        {
            bOk = false;
        }
        oConnexion.Close();
        return bOk;
    }
}
我的第一个网络表单的aspx:

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="ConnexionSaisieHeures.aspx.cs" Inherits="SaisieHeures.ConnexionSaisieHeures" %>

<!DOCTYPE html>

<html xmlns="http://www.w3.org/1999/xhtml">

<head runat="server">
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>WEATHER MEASURES : Connexion à l'application de saisie des heures</title>
    <link href="SaisieHeures.css" rel="stylesheet" />
    <link href="https://fonts.googleapis.com/css?family=Roboto" rel="stylesheet" />
</head>

<body>
    <header>
        Saisie des heures - Connexion
    </header>

    <br />

    <article>
        <form id="FormConnexionSaisieHeures" runat="server">
            <table id="ErreurConnexion" runat="server">
                <tr>
                    <td>
                        <asp:Label ID="lblErreurConnexion" runat="server" ForeColor="Red"></asp:Label>
                    </td>
                </tr>
            </table>
            <br />
            <table id="Connexion">
                <tr>
                    <td>
                        <asp:Label ID="lblNomUtilisateur" runat="server" Text="Nom d'utilisateur :"></asp:Label>
                    </td>
                    <td>
                        <asp:TextBox ID="txtNomUtilisateur" runat="server" Style="text-align: center"></asp:TextBox>
                    </td>
                </tr>
                <tr>
                    <td>
                        <asp:Label ID="lblMotDePasse" runat="server" Text="Mot de passe :"></asp:Label>
                    </td>
                    <td>
                        <asp:TextBox ID="txtMotDePasse" runat="server" TextMode="Password" Style="text-align: center"></asp:TextBox>
                    </td>
                </tr>
                <tr>
                    <td colspan="2">
                        <asp:Button ID="btnConnexion" runat="server" Text="Connexion" OnClick="btnConnexion_Click" />
                    </td>
                </tr>
            </table>
        </form>
    </article>
</body>
</html>
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="SaisieHeures.aspx.cs" Inherits="SaisieHeures.SaisieHeures" %>

<!DOCTYPE html>

<html xmlns="http://www.w3.org/1999/xhtml">

<head runat="server">
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>WEATHER MEASURES : Application de saisie des heures</title>
    <link href="SaisieHeures.css" rel="stylesheet" />
    <link href="https://fonts.googleapis.com/css?family=Roboto" rel="stylesheet" />
</head>

<body>
    <header>
        Saisie des heures - Application
    </header>

    <br />

    <article>
        <form id="FormSaisieHeures" runat="server">
            <table id="PrenomNomUtilisateur">
                <tr>
                    <td colspan="2">
                        <asp:Label ID="lblPrenomNomUtilisateur" runat="server"></asp:Label>
                    </td>
                </tr>
            </table>
            <br />
            <table id="SelectionMoisAnnee">
                <tr>
                    <td>
                        <asp:Button ID="btnMoisPrecedent" runat="server" Text="<" OnClick="btnMoisPrecedent_Click" />
                        <asp:Label ID="lblMoisAnnee" runat="server"></asp:Label>
                        <asp:Button ID="btnMoisSuivant" runat="server" Text=">" OnClick="btnMoisSuivant_Click" />
                    </td>
                </tr>
            </table>
            <br />
            <table id="ErreurSaisie" runat="server">
                <tr>
                    <td>
                        <asp:Label ID="lblErreurSaisie" runat="server"></asp:Label>
                    </td>
                </tr>
            </table>
            <br />
            <table id="FicheSaisieHeures">
                <tr>
                    <td>
                        <asp:Label ID="lblChoixSemaine" runat="server" Text="Semaine : "></asp:Label>
                    </td>
                    <td>
                        <asp:DropDownList ID="ddlSemaines" runat="server" OnSelectedIndexChanged="ddlSemaines_SelectedIndexChanged" AutoPostBack="True"></asp:DropDownList>
                    </td>
                </tr>
                <tr>
                    <td>
                        <asp:Label ID="lblJours" runat="server" Text="Jours de la semaine"></asp:Label>
                    </td>
                    <td>
                        <asp:Label ID="lblNombreHeuresRealise" runat="server" Text="Nombre d'heures réalisées"></asp:Label>
                    </td>
                </tr>
                <tr>
                    <td>
                        <asp:Label ID="lblLundi" runat="server"></asp:Label>
                    </td>
                    <td>
                        <asp:TextBox ID="txtHeuresLundi" runat="server" Style="text-align: center"></asp:TextBox>
                    </td>
                </tr>
                <tr>
                    <td>
                        <asp:Label ID="lblMardi" runat="server"></asp:Label>
                    </td>
                    <td>
                        <asp:TextBox ID="txtHeuresMardi" runat="server" Style="text-align: center"></asp:TextBox>
                    </td>
                </tr>
                <tr>
                    <td>
                        <asp:Label ID="lblMercredi" runat="server"></asp:Label>
                    </td>
                    <td>
                        <asp:TextBox ID="txtHeuresMercredi" runat="server" Style="text-align: center"></asp:TextBox>
                    </td>
                </tr>
                <tr>
                    <td>
                        <asp:Label ID="lblJeudi" runat="server"></asp:Label>
                    </td>
                    <td>
                        <asp:TextBox ID="txtHeuresJeudi" runat="server" Style="text-align: center"></asp:TextBox>
                    </td>
                </tr>
                <tr>
                    <td>
                        <asp:Label ID="lblVendredi" runat="server"></asp:Label>
                    </td>
                    <td>
                        <asp:TextBox ID="txtHeuresVendredi" runat="server" Style="text-align: center"></asp:TextBox>
                    </td>
                </tr>
            </table>
            <br />
            <table id="MessagesCalculTotalHeuresMois" runat="server">
                <tr>
                    <td>
                        <asp:Label ID="lblMessageCalculTotalHeuresMois" runat="server"></asp:Label>
                    </td>
                </tr>
            </table>
            <br />
            <table id="TotalHeuresMois">
                <tr>
                    <td>
                        <asp:Label ID="lblTotalHeuresMois" runat="server" Text="Nombre total d'heures réalisées dans le mois"></asp:Label>
                        <br />
                        <asp:TextBox ID="txtCalculTotalHeuresMois" runat="server" ReadOnly="True" Style="text-align: center"></asp:TextBox>
                    </td>
                </tr>
            </table>
            <br />
            <table id="Boutons">
                <tr>
                    <td>
                        <asp:Button ID="btnValider" runat="server" Text="Valider" OnClick="btnValider_Click" />
                    </td>
                    <td>
                        <asp:Button ID="btnAnnuler" runat="server" Text="Annuler" OnClick="btnAnnuler_Click" />
                    </td>
                    <td>
                        <asp:Button ID="btnGenererExcel" runat="server" Text="Générer Excel" OnClick="btnGenererExcel_Click" />
                    </td>
                    <td>
                        <asp:Button ID="btnDeconnexion" runat="server" Text="Déconnexion" OnClick="btnDeconnexion_Click" />
                    </td>
                </tr>
            </table>
        </form>
    </article>
</body>
</html>

天气测量:连接应用程序
塞西·德·豪瑞斯-康涅西翁酒店


我的第二个网络表单的aspx:

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="ConnexionSaisieHeures.aspx.cs" Inherits="SaisieHeures.ConnexionSaisieHeures" %>

<!DOCTYPE html>

<html xmlns="http://www.w3.org/1999/xhtml">

<head runat="server">
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>WEATHER MEASURES : Connexion à l'application de saisie des heures</title>
    <link href="SaisieHeures.css" rel="stylesheet" />
    <link href="https://fonts.googleapis.com/css?family=Roboto" rel="stylesheet" />
</head>

<body>
    <header>
        Saisie des heures - Connexion
    </header>

    <br />

    <article>
        <form id="FormConnexionSaisieHeures" runat="server">
            <table id="ErreurConnexion" runat="server">
                <tr>
                    <td>
                        <asp:Label ID="lblErreurConnexion" runat="server" ForeColor="Red"></asp:Label>
                    </td>
                </tr>
            </table>
            <br />
            <table id="Connexion">
                <tr>
                    <td>
                        <asp:Label ID="lblNomUtilisateur" runat="server" Text="Nom d'utilisateur :"></asp:Label>
                    </td>
                    <td>
                        <asp:TextBox ID="txtNomUtilisateur" runat="server" Style="text-align: center"></asp:TextBox>
                    </td>
                </tr>
                <tr>
                    <td>
                        <asp:Label ID="lblMotDePasse" runat="server" Text="Mot de passe :"></asp:Label>
                    </td>
                    <td>
                        <asp:TextBox ID="txtMotDePasse" runat="server" TextMode="Password" Style="text-align: center"></asp:TextBox>
                    </td>
                </tr>
                <tr>
                    <td colspan="2">
                        <asp:Button ID="btnConnexion" runat="server" Text="Connexion" OnClick="btnConnexion_Click" />
                    </td>
                </tr>
            </table>
        </form>
    </article>
</body>
</html>
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="SaisieHeures.aspx.cs" Inherits="SaisieHeures.SaisieHeures" %>

<!DOCTYPE html>

<html xmlns="http://www.w3.org/1999/xhtml">

<head runat="server">
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>WEATHER MEASURES : Application de saisie des heures</title>
    <link href="SaisieHeures.css" rel="stylesheet" />
    <link href="https://fonts.googleapis.com/css?family=Roboto" rel="stylesheet" />
</head>

<body>
    <header>
        Saisie des heures - Application
    </header>

    <br />

    <article>
        <form id="FormSaisieHeures" runat="server">
            <table id="PrenomNomUtilisateur">
                <tr>
                    <td colspan="2">
                        <asp:Label ID="lblPrenomNomUtilisateur" runat="server"></asp:Label>
                    </td>
                </tr>
            </table>
            <br />
            <table id="SelectionMoisAnnee">
                <tr>
                    <td>
                        <asp:Button ID="btnMoisPrecedent" runat="server" Text="<" OnClick="btnMoisPrecedent_Click" />
                        <asp:Label ID="lblMoisAnnee" runat="server"></asp:Label>
                        <asp:Button ID="btnMoisSuivant" runat="server" Text=">" OnClick="btnMoisSuivant_Click" />
                    </td>
                </tr>
            </table>
            <br />
            <table id="ErreurSaisie" runat="server">
                <tr>
                    <td>
                        <asp:Label ID="lblErreurSaisie" runat="server"></asp:Label>
                    </td>
                </tr>
            </table>
            <br />
            <table id="FicheSaisieHeures">
                <tr>
                    <td>
                        <asp:Label ID="lblChoixSemaine" runat="server" Text="Semaine : "></asp:Label>
                    </td>
                    <td>
                        <asp:DropDownList ID="ddlSemaines" runat="server" OnSelectedIndexChanged="ddlSemaines_SelectedIndexChanged" AutoPostBack="True"></asp:DropDownList>
                    </td>
                </tr>
                <tr>
                    <td>
                        <asp:Label ID="lblJours" runat="server" Text="Jours de la semaine"></asp:Label>
                    </td>
                    <td>
                        <asp:Label ID="lblNombreHeuresRealise" runat="server" Text="Nombre d'heures réalisées"></asp:Label>
                    </td>
                </tr>
                <tr>
                    <td>
                        <asp:Label ID="lblLundi" runat="server"></asp:Label>
                    </td>
                    <td>
                        <asp:TextBox ID="txtHeuresLundi" runat="server" Style="text-align: center"></asp:TextBox>
                    </td>
                </tr>
                <tr>
                    <td>
                        <asp:Label ID="lblMardi" runat="server"></asp:Label>
                    </td>
                    <td>
                        <asp:TextBox ID="txtHeuresMardi" runat="server" Style="text-align: center"></asp:TextBox>
                    </td>
                </tr>
                <tr>
                    <td>
                        <asp:Label ID="lblMercredi" runat="server"></asp:Label>
                    </td>
                    <td>
                        <asp:TextBox ID="txtHeuresMercredi" runat="server" Style="text-align: center"></asp:TextBox>
                    </td>
                </tr>
                <tr>
                    <td>
                        <asp:Label ID="lblJeudi" runat="server"></asp:Label>
                    </td>
                    <td>
                        <asp:TextBox ID="txtHeuresJeudi" runat="server" Style="text-align: center"></asp:TextBox>
                    </td>
                </tr>
                <tr>
                    <td>
                        <asp:Label ID="lblVendredi" runat="server"></asp:Label>
                    </td>
                    <td>
                        <asp:TextBox ID="txtHeuresVendredi" runat="server" Style="text-align: center"></asp:TextBox>
                    </td>
                </tr>
            </table>
            <br />
            <table id="MessagesCalculTotalHeuresMois" runat="server">
                <tr>
                    <td>
                        <asp:Label ID="lblMessageCalculTotalHeuresMois" runat="server"></asp:Label>
                    </td>
                </tr>
            </table>
            <br />
            <table id="TotalHeuresMois">
                <tr>
                    <td>
                        <asp:Label ID="lblTotalHeuresMois" runat="server" Text="Nombre total d'heures réalisées dans le mois"></asp:Label>
                        <br />
                        <asp:TextBox ID="txtCalculTotalHeuresMois" runat="server" ReadOnly="True" Style="text-align: center"></asp:TextBox>
                    </td>
                </tr>
            </table>
            <br />
            <table id="Boutons">
                <tr>
                    <td>
                        <asp:Button ID="btnValider" runat="server" Text="Valider" OnClick="btnValider_Click" />
                    </td>
                    <td>
                        <asp:Button ID="btnAnnuler" runat="server" Text="Annuler" OnClick="btnAnnuler_Click" />
                    </td>
                    <td>
                        <asp:Button ID="btnGenererExcel" runat="server" Text="Générer Excel" OnClick="btnGenererExcel_Click" />
                    </td>
                    <td>
                        <asp:Button ID="btnDeconnexion" runat="server" Text="Déconnexion" OnClick="btnDeconnexion_Click" />
                    </td>
                </tr>
            </table>
        </form>
    </article>
</body>
</html>

天气测量:应用天气测量仪
Saisie des heures-应用程序








txtnomusilimateur.Text
null
;它永远不会恢复用户输入的文本

请问我该怎么解决

(首先用完整的代码重新编辑,我可以得到您需要的更多信息,我真的很想解决它)

附言:@ElekGuidolin我在你提出建议之前重新编写原始代码,向你展示我最初的做法。

克里斯托弗。 很抱歉搞混了。但事实上,我想用一种更好的方式来解释这个问题

当您使用Asp.Net Web窗体时,您可以在有或没有Request.Form的情况下获取文本框的值,但只能在回发后获取。 如果要从Request.Form中获取值,需要在引号中输入字段的完整名称,如果是asp.Net控件,则该字段的名称如下:ctl00$FeaturedContent$txtMyTest。 但是,您也可以按照最初发布的方式获取值

所以,两种方法都有效,但只有在回发之后,好吗

如果您在输入标签时考虑标签将一起更改,那么您正在谈论客户端脚本。 这是另一篇文章和另一个主题的问题,对吧

public string TestProperty
{
    get
    {
        //return txtMyTest.Text;
        return Request.Form["ctl00$FeaturedContent$txtMyTest"];
    }
    set
    {
        txtMyTest.Text = value;
    }
}

protected void Page_Load(object sender, EventArgs e)
{
    if (IsPostBack)
    {
        lblMyTest.Text = TestProperty;
    }
}
编辑:
@ChristopherLEBAS,因为在第二个表单中创建新的ConnexionSaiseHeures时,第二个表单中的值将始终为空,因为您是在那一刻创建它们的(私有静态ConnexionSaiseHeures WebFormConnexionSaiseHeures=new ConnexionSaiseHeures();),而不使用现有的填充表单

由于您希望在其他页面中包含此信息,可能更好的方法是使用会话或cookie,因为您需要维护页面之间的状态,因此您可以执行以下操作:

protected void btnConnexion_Click(object sender, EventArgs e)
{
    Session["NomUtilisateur"] = txtNomUtilisateur.Text;
    Session["MotDePasse"] = FormsAuthentication.HashPasswordForStoringInConfigFile(txtMotDePasse.Text, "MD5");

    if (Authentifier(txtNomUtilisateur.Text, txtMotDePasse.Text))
    {
        FormsAuthentication.RedirectFromLoginPage(txtNomUtilisateur.Text, false);
    }
    else
    {
        ErreurConnexion.Visible = true;
        lblErreurConnexion.ForeColor = System.Drawing.Color.Red;
        lblErreurConnexion.Text = "Erreur d'authentification : Le nom d'utilisateur ou le mot de passe est incorrect.";
    }
}
然后,以第二种形式:

private void PrenomNomUtilisateur()
{
    string _NomUtilisateur = Session["NomUtilisateur"];
    string _MotDePasse = Session["MotDePasse"];
    SqlConnection oConnexion = new SqlConnection(Convert.ToString(ConfigurationManager.ConnectionStrings["SaisieHeuresConnectionString"]));
    SqlCommand oCommand = new SqlCommand("SELECT * FROM Utilisateurs WHERE NomUtilisateur='" + _NomUtilisateur + "'", oConnexion);

    try
    {
        // Ouverture de la connexion et exécution de la requête
        oConnexion.Open();
        SqlDataReader drUtilisateur = oCommand.ExecuteReader();
        // Parcours de la liste des utilisateurs
        while (drUtilisateur.Read())
        {
            if (drUtilisateur["MotDePasse"].ToString() == _MotDePasse)
            {
                PrenomNom = drUtilisateur["PrenomNom"].ToString();
            }
        }
    }
    catch (Exception ex)
    {
        Console.WriteLine("Exception : " + ex.Message);
    }
    finally
    {
        oConnexion.Close();
    }
}

请注意,我放置了一个Finally块,因为如果发生错误,连接仍将关闭。

何时调用此属性?您确定正在输入文本吗?是否有其他内容覆盖了文本?显示的代码没有问题。它从不为空。即使您将
null
分配给
Text
属性
字符串,也会返回空的
()我猜您可能有
回发问题,因为它无法恢复用户输入的文本。检查这个答案,我希望它能解决