我嘗試恢復用戶輸入到文本框中的內容。當用戶輸入數據時,TextBox.Text爲空
我創建訪問器來公開我的文本框,因爲我之前遇到了可訪問性問題。
這裏是我的全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;
}
}
這裏的第二種形式的一部分,具有用戶由於用戶名和密碼的第一個和最後一個名字:
private static ConnexionSaisieHeures WebFormConnexionSaisieHeures = new ConnexionSaisieHeures();
private void PrenomNomUtilisateur()
{
SqlConnection oConnexion = new SqlConnection(Convert.ToString(ConfigurationManager.ConnectionStrings["SaisieHeuresConnectionString"]));
SqlCommand oCommand = new SqlCommand("SELECT * FROM Utilisateurs WHERE NomUtilisateur='" + WebFormConnexionSaisieHeures.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() == WebFormConnexionSaisieHeures.MotDePasse)
{
PrenomNom = drUtilisateur["PrenomNom"].ToString();
}
}
}
catch (Exception ex)
{
Console.WriteLine("Exception : " + ex.Message);
}
oConnexion.Close();
}
我的第一個網頁表單的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>
我的第二個網頁表單的ASPX:
<%@ 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>
txtNomUtilisateur.Text
是null
;它永遠不會恢復用戶輸入的文本。
我該如何解決它?
(全碼首先重新編輯,我可以有更多的信息我你需要,我真的想解決它)
附: :@ElekGuidolin在你的提議之前,我記下原始代碼,向你展示我原來做過的事情。
您何時調用此屬性?你確定輸入文字嗎?其他東西是否覆蓋文字?顯示的代碼沒有問題。 – David
它永遠不會爲空。即使給'Text'屬性賦值'null',String.Empty'也會返回([source])(https://referencesource.microsoft.com/#System.Web/UI/WebControls/TextBox.cs,92b4f85cd223169c ,引用)) –
我想你可能有基於*的回發問題,它永遠不會恢復用戶輸入的文本*。檢查這個答案我希望它可以解決您的問題http://stackoverflow.com/a/34545012/2946329 –