web-dev-qa-db-de.com

Wie stelle ich einen ASP.NET-Beschriftungstext aus Code hinter dem Laden der Seite ein?

Ich scheine da draußen keine Antwort zu finden. Hier ist das Szenario: Ich habe ein ASP.NET-Projekt, das C # verwendet. Ich lade Daten (Benutzername, E-Mail usw.) aus einer SQLite-Datenbank mit C # (mit ADO). Ich werde die Daten in statische globale Variablen in einer Klassendatei in meinem App_Data-Ordner laden. Ich muss in der Lage sein, den Benutzernamen während des Ladens in ein ASP.NET-Label auf einer Seite einzufügen.

In PHP würde ich es einfach so machen:

<?php
function GetUserName() {
//code which retrieves username from db.
return username;
}
?>
<p>Here is the username: <?php echo GetUserName(); ?></p>

Kann jemand erklären, wie das gemacht wird? Ich bin neu bei ASP.NET. 

Hier ist ein Update für mehr Details. Ich habe versucht, was Sie vorgeschlagen haben. Meine Seitenladefunktion befindet sich in einer Datei namens RankPage.aspx.cs und die Tabelle darunter befindet sich in RankPage.aspx. Die Idee ist, eine Reihe von Benutzern aufzulisten, die ich aus der Datenbank abgerufen habe. Ich habe nur 'myLabel' hineingeworfen, um es zu testen. Im Moment, ohne "myLabel" in meinem Code dahinter zu deklarieren, ist es fehlerhaft, dass "myLabel" im aktuellen Kontext nicht vorhanden ist. Wenn ich 'myLabel' mit der Funktion FindControl () deklariere, erhalte ich eine Laufzeitausnahme, dass 'myLabel' nicht auf eine Instanz eines Objekts festgelegt ist. 

Hier ist der 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

Für dieses Label:

<asp:label id="myLabel" runat="server" />

Im Code hinter use (C #):

myLabel.Text = "my text"; 

Update (folgende aktualisierte Frage):

Sie brauchen FindControl nicht zu verwenden - diese ganze Zeile ist überflüssig:

  Label myLabel = this.FindControl("myLabel") as Label;
  myLabel.Text = "my text";

Sollte nur sein:

  myLabel.Text = "my text";

Der Visual Studio-Designer sollte eine Datei erstellen, bei der alle serverseitigen Steuerelemente der Klasse bereits ordnungsgemäß hinzugefügt wurden (standardmäßig in einer RankPage.aspx.designer.cs-Datei).

Sie sprechen von einer RankPage.cs-Datei - wie sie von Visual Studio benannt wurde, ist RankPage.aspx.cs. Wie verknüpfen Sie diese Dateien miteinander?

28
Oded

Wenn Sie nur den Code auf der Seite platzieren, wird normalerweise hinter dem Code ein automatisch generiertes Feld angezeigt, das Sie verwenden können, wie es von @Oded angezeigt wird. 

In anderen Fällen können Sie diesen Code immer verwenden:

Label myLabel = this.FindControl("myLabel") as Label; // this is your Page class

if(myLabel != null)
   myLabel.Text = "SomeText";
3
Tejs

Auf Ihrer ASP.NET-Seite:

<asp:Label ID="UserNameLabel" runat="server" />

In Ihrem Code hinter (vorausgesetzt, Sie verwenden C #):

function Page_Load(object sender, EventArgs e)
{
    if (!Page.IsPostBack)
    {
       UserNameLabel.Text = "User Name";
    }
}
2
Mun

Ich weiß, dass dies vor langer Zeit gepostet wurde, und es wurde als "Antworten" markiert, aber für mich beantwortete die ausgewählte Antwort nicht die Frage, die ich dachte, der Benutzer stellte sich. Es schien mir, als suchte er nach dem Ansatz, den man in ASP .Net verfolgen kann, der seiner Inline-Datenbindung entspricht, die zuvor in PHP ausgeführt wurde.

Hier war sein PHP:

<p>Here is the username: <?php echo GetUserName(); ?></p>

Folgendes würde man in ASP .Net tun:

<p>Here is the username: <%= GetUserName() %></p>
1
Russ Rahn

Im Seitenladeereignis legen Sie Ihr Label fest

lbl_username.text = "some text";

protected void Page_Load(object sender, EventArgs e)
{
    myLabel.Text = "My text";
}

dies ist die Basis von ASP.Net. Sie denken in Steuerelementen und nicht in HTML-Fluss.

Erwägen Sie, einem Kurs zu folgen oder ein Anfängerbuch zu lesen ... und vergessen Sie zunächst, was Sie in PHP gemacht haben :)

0
Steve B

Versuchen Sie es auf Ihrer Aspx-Seite

<asp:Label ID="myLabel" runat="server"></asp:Label>

und dann in Ihrem CodeBehind können Sie einfach tun 

myLabel.Text = "My Label";
0
Aaron Hathaway