如何在页面加载时从代码后面设置ASP.NET标签文本?

时间:2011-03-16 21:24:52

标签: asp.net label

我似乎无法找到答案。这是场景: 我有一个使用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>

7 个答案:

答案 0 :(得分:28)

对于这个标签:

<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。你是如何将这些文件链接在一起的?

答案 1 :(得分:3)

如果您只是将代码放在页面上,通常后面的代码将获得一个自动生成的字段,您可以使用@Oded显示的字段。

在其他情况下,您始终可以使用此代码:

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

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

答案 2 :(得分:2)

在您的ASP.NET页面中:

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

在您的代码中(假设您正在使用C#):

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

答案 3 :(得分:1)

我知道这是很久以前发布的,它已被标记为已回答,但对我而言,所选答案并没有回答我认为用户正在冒充的问题。在我看来,他正在寻找可以在ASP .Net中采用的方法,该方法对应于之前在php中执行的内联数据绑定。

这是他的php:

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

以下是ASP .Net中的内容:

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

答案 4 :(得分:0)

在页面加载事件中,您可以设置标签

lbl_username.text = "some text";

答案 5 :(得分:0)

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

这是ASP.Net的基础,思考控件,而不是HTML流程。

考虑学习一门课程,或者阅读一本初学者书......首先,忘记你在php中所做的事情:)

答案 6 :(得分:0)

在aspx页面中尝试这样的事情

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

然后在你的代码隐藏中你可以做到

myLabel.Text = "My Label";