Как установить текст меток ASP.NET из кода позади загрузки страницы?
Кажется, я не могу найти ответ. Здесь сценарий:
У меня есть проект ASP.NET с использованием С#. Я загружаю данные (имя пользователя, адрес электронной почты и т.д.) Из базы данных sqlite с С# (используя ADO). Я загружу данные в статические глобальные переменные в файле класса в папке 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" не существует в текущем контексте. Если я объявляю "myLabel" с помощью функции FindControl(), я получаю исключение во время выполнения, если "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>
Ответы
Ответ 1
Для этой метки:
<asp:label id="myLabel" runat="server" />
В используемом коде (С#):
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
. Как вы связываете эти файлы вместе?
Ответ 2
Если вы просто размещаете код на странице, обычно код позади будет получать автоматически сгенерированное поле, которое вы должны использовать, например, @Oded.
В других случаях вы всегда можете использовать этот код:
Label myLabel = this.FindControl("myLabel") as Label; // this is your Page class
if(myLabel != null)
myLabel.Text = "SomeText";
Ответ 3
На странице ASP.NET:
<asp:Label ID="UserNameLabel" runat="server" />
В вашем коде (если вы используете С#):
function Page_Load(object sender, EventArgs e)
{
if (!Page.IsPostBack)
{
UserNameLabel.Text = "User Name";
}
}
Ответ 4
В событии загрузки страницы вы устанавливаете метку
lbl_username.text = "some text";
Ответ 5
protected void Page_Load(object sender, EventArgs e)
{
myLabel.Text = "My text";
}
это база ASP.Net, мышление в элементах управления, а не поток html.
Рассмотрите следующий курс или прочитайте книгу начинающих... и сначала забудьте о том, что вы сделали в php:)
Ответ 6
Попробуйте что-то подобное на странице aspx
<asp:Label ID="myLabel" runat="server"></asp:Label>
а затем в вашем коде вы можете просто сделать
myLabel.Text = "My Label";
Ответ 7
Я знаю, что это было опубликовано давно, и на нем был отмечен ответ, но для меня выбранный ответ не отвечал на вопрос, который я думал, что пользователь создает. Мне показалось, что он искал подход, который можно использовать в ASP.Net, который соответствует его встроенной привязке данных, ранее выполнявшейся в php.
Вот его php:
<p>Here is the username: <?php echo GetUserName(); ?></p>
Вот что можно было бы сделать в ASP.Net:
<p>Here is the username: <%= GetUserName() %></p>