web-dev-qa-db-fra.com

Comment définir un texte d'étiquette ASP.NET à partir du code situé après le chargement de la page?

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>
16
David Mulder

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?

28
Oded

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";
3
Tejs

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";
    }
}
2
Mun

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>
1
Russ Rahn

Dans l'événement de chargement de page, vous définissez votre étiquette

lbl_username.text = "some text";

0
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 :)

0
Steve B

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";
0
Aaron Hathaway