C# 文本框。当用户向文本框中输入数据时,文本为空
我尝试恢复用户在文本框中输入的内容 我创建访问器来公开我的文本框,因为我以前遇到过访问问题 以下是我的完整连接aspx.cs: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
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
属性字符串,也会返回空的()我猜您可能有回发问题,因为它无法恢复用户输入的文本。检查这个答案,我希望它能解决