web-dev-qa-db-ja.com

ページの読み込み時にコードビハインドからASP.NETラベルテキストを設定するにはどうすればよいですか?

これに対する答えが見つからないようです。シナリオは次のとおりです。C#を使用するASP.NETプロジェクトがあります。 C#(ADOを使用)でsqliteデータベースからデータ(ユーザー名、電子メールなど)を読み込んでいます。 App_Dataフォルダーのクラスファイルの静的なグローバル変数にデータをロードします。ロード中にページ上のASP.NETラベルにユーザー名を挿入できる必要があります。

PHPでは、次のようにします。

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

誰もこれがどのように行われるか説明できますか? ASP.NETは初めてです。

詳細はこちらをご覧ください。皆さんが提案したことを試しました。私のページロード関数はRankPage.aspx.csというファイルにあり、その下の表はRankPage.aspxにあります。アイデアは、データベースから取得したユーザーの束をリストすることです。私はそれをテストするために「myLabel」を投入しました。現在、私のコードビハインドで「myLabel」を宣言せずに、「myLabel」が現在のコンテキストに存在しないことをエラーにしています。 FindControl()関数を使用して「myLabel」を宣言すると、「myLabel」がオブジェクトのインスタンスに設定されていないというランタイム例外が発生します。

コードは次のとおりです。

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

このラベルの場合:

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

コードビハインドユース(C#):

myLabel.Text = "my text"; 

更新(更新された質問に続く):

FindControlを使用する必要はありません-その行全体は不要です。

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

ちょうどする必要があります:

  myLabel.Text = "my text";

Visual Studioデザイナーは、すべてのサーバー側コントロールが既にクラスに適切に追加されたファイルを作成する必要があります(デフォルトではRankPage.aspx.designer.csファイル内)。

あなたはRankPage.csファイルについて話している-Visual Studioがそれを命名する方法はRankPage.aspx.csです。これらのファイルをどのようにリンクしていますか?

30
Oded

ページにコードを配置するだけの場合、通常、コードビハインドは、@ Odedが示すように、使用する自動生成フィールドを取得します。

それ以外の場合は、いつでもこのコードを使用できます。

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

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

ASP.NETページで:

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

コードビハインド(C#を使用している場合):

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

これはかなり前に投稿されたものであり、回答済みとマークされていますが、選択した回答は、ユーザーがポーズをとっていると思った質問に答えていませんでした。彼は、以前にphpで実行されたインラインデータバインディングに対応するASP .Netで実行できるアプローチを探していたようです。

ここに彼のphpがありました。

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

ASP .Net:

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

ページ読み込みイベントでラベルを設定します

lbl_username.text = "some text";

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

これはASP.Netのベースであり、HTMLフローではなくコントロールで考えます。

コースに従うか、初心者向けの本を読むことを検討してください...そして、最初に、PHPで行ったことを忘れてください:)

0
Steve B

あなたのaspxページでこのようなものを試してください

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

そして、あなたのコードビハインドであなたはちょうどすることができます

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