Как установить текст метки ASP.NET из кода при загрузке страницы? - PullRequest
17 голосов
/ 17 марта 2011

Я не могу найти ответ на этот вопрос. Вот сценарий: У меня есть проект ASP.NET с использованием C #. Я загружаю данные (имя пользователя, адрес электронной почты и т. Д.) Из базы данных sqlite с помощью C # (используя 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>

Ответы [ 7 ]

28 голосов
/ 17 марта 2011

Для этого ярлыка:

<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.Как вы связываете эти файлы вместе?

3 голосов
/ 17 марта 2011

Если вы просто размещаете код на странице, обычно этот код получает автоматически сгенерированное поле, которое вы будете использовать, как показано в @Oded.

В других случаях вы всегда можете использовать этот код:

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

if(myLabel != null)
   myLabel.Text = "SomeText";
2 голосов
/ 17 марта 2011

На вашей странице ASP.NET:

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

В вашем коде (если вы используете C #):

function Page_Load(object sender, EventArgs e)
{
    if (!Page.IsPostBack)
    {
       UserNameLabel.Text = "User Name";
    }
}
1 голос
/ 18 декабря 2016

Я знаю, что это было опубликовано давным-давно, и оно было помечено как отвеченное, но для меня выбранный ответ не отвечал на вопрос, который, по моему мнению, представлял пользователь. Мне показалось, что он ищет подход, который можно использовать в ASP .Net, который соответствует его встроенному связыванию данных, ранее выполненному в php.

Вот его php:

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

Вот что можно сделать в ASP .Net:

<p>Here is the username: <%= GetUserName() %></p>
0 голосов
/ 17 марта 2011

Попробуйте что-то подобное на странице aspx

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

, а затем в своем коде вы можете просто сделать

myLabel.Text = "My Label";
0 голосов
/ 17 марта 2011
protected void Page_Load(object sender, EventArgs e)
{
    myLabel.Text = "My text";
}

это основа ASP.Net, мышление в элементах управления, а не html-поток.

Подумайте о прохождении курса или чтении книги для начинающих ... и сначала забудьте о том, что вы делали вphp:)

0 голосов
/ 17 марта 2011

В событии загрузки страницы вы устанавливаете свой ярлык

lbl_username.text = "some text";

...