Je n'arrive pas à trouver de réponse à cela. Voici le scénario: J'ai un projet ASP.NET utilisant C #. Je charge des données (nom d'utilisateur, email, etc.) à partir d'une base de données sqlite avec C # (utilisant ADO). Je chargerai les données dans des variables globales statiques dans un fichier de classe de mon dossier App_Data. Je dois pouvoir insérer le nom d'utilisateur dans une étiquette ASP.NET sur une page lors du chargement.
En PHP, je le ferais simplement comme ceci:
<?php
function GetUserName() {
//code which retrieves username from db.
return username;
}
?>
<p>Here is the username: <?php echo GetUserName(); ?></p>
Quelqu'un peut-il expliquer comment cela est fait? Je suis nouveau sur ASP.NET.
Voici une mise à jour pour plus de détails. J'ai essayé ce que vous avez suggéré. Ma fonction de chargement de page se trouve dans un fichier appelé RankPage.aspx.cs et le tableau ci-dessous se trouve dans RankPage.aspx. L'idée est de répertorier un groupe d'utilisateurs que j'ai extraits de la base de données. J'ai ajouté 'myLabel' juste pour le tester. À l'heure actuelle, sans déclarer "myLabel" dans mon code derrière, cela signifie que "myLabel" n'existe pas dans le contexte actuel. Si je déclare «myLabel» à l'aide de la fonction FindControl (), j'obtiens une exception d'exécution selon laquelle «myLabel» n'est pas défini sur une instance d'objet.
Voici le code:
protected void Page_Load(object sender, EventArgs e)
{
if (!Page.IsPostBack)
{
Label myLabel = this.FindControl("myLabel") as Label;
myLabel.Text = "my text";
}
}
<table>
<tbody>
<tr>
<th>Name</th>
<th>Score</th>
</tr>
<tr>
<td>name</td>
<td>Score</td>
</tr>
<!-- Current User -->
<tr>
<td><asp:Label id="currentUserName" runat="server"></asp:Label></td>
<td><asp:Label id="currentUserScore" runat="server"></asp:Label></td>
<td><asp:Label ID="myLabel" runat="server" /></td>
</tr>
<!-- End Current User -->
</tbody>
</table>
Pour cette étiquette:
<asp:label id="myLabel" runat="server" />
Dans le code derrière use (C #):
myLabel.Text = "my text";
Mise à jour (question mise à jour suivante):
Vous n'avez pas besoin d'utiliser FindControl
- toute la ligne est superflue:
Label myLabel = this.FindControl("myLabel") as Label;
myLabel.Text = "my text";
Devrait être juste:
myLabel.Text = "my text";
Le concepteur Visual Studio doit créer un fichier avec tous les contrôles côté serveur déjà ajoutés correctement à la classe (dans un fichier RankPage.aspx.designer.cs
, par défaut).
Vous parlez d'un fichier RankPage.cs
- la façon dont Visual Studio l'aurait nommé est RankPage.aspx.cs
. Comment liez-vous ces fichiers ensemble?
Si vous ne faites que placer le code sur la page, le code situé derrière générera généralement un champ généré automatiquement que vous utiliserez comme l'a montré @Oded.
Dans d'autres cas, vous pouvez toujours utiliser ce code:
Label myLabel = this.FindControl("myLabel") as Label; // this is your Page class
if(myLabel != null)
myLabel.Text = "SomeText";
Dans votre page ASP.NET:
<asp:Label ID="UserNameLabel" runat="server" />
Dans votre code derrière (en supposant que vous utilisez C #):
function Page_Load(object sender, EventArgs e)
{
if (!Page.IsPostBack)
{
UserNameLabel.Text = "User Name";
}
}
Je sais que cela a été posté il y a longtemps et qu'il a été marqué comme étant répondu, mais pour moi, la réponse sélectionnée ne répondait pas à la question que je pensais que l'utilisateur posait. Il me semblait qu’il cherchait l’approche que l’on pouvait adopter dans ASP .Net et qui correspond à sa liaison de données en ligne précédemment effectuée en php.
Voici son php:
<p>Here is the username: <?php echo GetUserName(); ?></p>
Voici ce que l'on ferait dans ASP .Net:
<p>Here is the username: <%= GetUserName() %></p>
Dans l'événement de chargement de page, vous définissez votre étiquette
lbl_username.text = "some text";
protected void Page_Load(object sender, EventArgs e)
{
myLabel.Text = "My text";
}
c’est la base d’ASP.Net, en ce qui concerne les contrôles, pas le flux HTML.
Pensez à suivre un cours ou à lire un livre pour débutant ... et commencez par oublier ce que vous avez fait en php :)
Essayez quelque chose comme ça dans votre page aspx
<asp:Label ID="myLabel" runat="server"></asp:Label>
puis dans votre codebehind vous pouvez simplement faire
myLabel.Text = "My Label";