如何在页面加载时从代码隐藏设置ASP.NET标签文本?
我似乎找不到答案。以下是场景: 我有一个使用C#的ASP.NET项目。我正在使用C#(使用ADO)从sqlite数据库加载数据(用户名、电子邮件等)。我将把数据加载到App_数据文件夹的类文件中的静态全局变量中。我需要能够在加载期间将用户名插入页面上的ASP.NET标签中 在PHP中,我会这样做:如何在页面加载时从代码隐藏设置ASP.NET标签文本?,asp.net,label,Asp.net,Label,我似乎找不到答案。以下是场景: 我有一个使用C#的ASP.NET项目。我正在使用C#(使用ADO)从sqlite数据库加载数据(用户名、电子邮件等)。我将把数据加载到App_数据文件夹的类文件中的静态全局变量中。我需要能够在加载期间将用户名插入页面上的ASP.NET标签中 在PHP中,我会这样做: <?php function GetUserName() { //code which retrieves username from db. return username; } ?>
<?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”在当前上下文中不存在。如果我使用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>
受保护的无效页面加载(对象发送方,事件参数e)
{
如果(!Page.IsPostBack)
{
Label myLabel=this.FindControl(“myLabel”)作为标签;
myLabel.Text=“我的文本”;
}
}
名称
分数
名称
分数
对于此标签:
<asp:label id="myLabel" runat="server" />
更新(以下更新问题): 您不需要使用
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
。如何将这些文件链接在一起?在ASP.NET页面中:
<asp:Label ID="UserNameLabel" runat="server" />
在页面加载事件中,设置标签
lbl\u username.text=“一些文本”代码>
这是ASP.Net的基础,在控件中思考,而不是html流
考虑学习一门课程,或者读一本入门书。。。首先,忘记您在php中所做的事情:)在您的aspx页面中尝试类似的操作
<asp:Label ID="myLabel" runat="server"></asp:Label>
如果您只是将代码放在页面上,那么后面的代码通常会自动生成一个要使用的字段,如@Oded所示
在其他情况下,您始终可以使用以下代码:
Label myLabel = this.FindControl("myLabel") as Label; // this is your Page class
if(myLabel != null)
myLabel.Text = "SomeText";
我知道这是很久以前发布的,它被标记为已回答,但对我来说,所选的答案并没有回答我认为用户提出的问题。在我看来,他正在寻找一种可以在ASP.Net中采用的方法,这种方法与他以前在php中执行的内联数据绑定相对应
以下是他的php:
<p>Here is the username: <?php echo GetUserName(); ?></p>
以下是用户名:
以下是在ASP.Net中要执行的操作:
<p>Here is the username: <%= GetUserName() %></p>
以下是用户名:
hmm。。。这是我最初尝试的,但没有成功。也许我遇到了另一个问题?我得到一个错误,当前上下文中不存在标签。我把代码放在aspx.cs文件的页面加载中…@David-应该可以。最好是在page\u load
处理程序中查看标签和代码的实际aspx标记,而不是PHP代码。啊,我想我看到了发生了什么。我正在MonoDevelop中开发,但该项目最初是在VisualStudio中创建的。不知怎的,当我转换项目时,RankPage.aspx.designer.cs被删除了。而RankPage.cs是一个输入错误,我的意思是RankPage.aspxUsing'Label myLabel=this.FindControl(“myLabel”)作为Label;'抛出未设置为对象错误实例的对象引用,就好像它在页面上找不到元素一样。我知道元素在页面上……好吧,最好的选择是进行空检查;如果控件不是标签,则语句的“as Label”部分将意味着它将返回null。我会把这个例子改得更安全些。
myLabel.Text = "My Label";
Label myLabel = this.FindControl("myLabel") as Label; // this is your Page class
if(myLabel != null)
myLabel.Text = "SomeText";
<p>Here is the username: <?php echo GetUserName(); ?></p>
<p>Here is the username: <%= GetUserName() %></p>