Подтвердить что ты не робот

Как использовать теги ASP.NET <% = в атрибутах управления сервером?

Это работает:

<span value="<%= this.Text %>" />

Это не работает:

<asp:Label Text="<%= this.Text %>" runat="server" />

Почему это?

Как я могу заставить второй случай работать правильно, т.е. установить текст метки в значение переменной "Текст"?

4b9b3361

Ответ 1

Не уверен, как отметить это как таковое, но это немного дубликат. Смотрите эту тему.

Я не думаю, что встраивание кода в вашу разметку действительно сделает вашу разметку более ясной или более элегантной.

Ответ 2

Использовать Выражения привязки данных

<asp:Label ID="Label1" runat="server" Text="<%# DateTime.Now %>" ></asp:Label>

Код позади,

protected void Page_Load(object sender, EventArgs e){
  DataBind();
}

Ответ 3

вы можете сделать это

 <asp:Label ID="Label1" runat="server" ><%= variable%></asp:Label>

Ответ 4

<asp:Label> компилируется во время выполнения и конвертируется в теги html. Вы можете установить текст с помощью codebehind или так:

<asp:Label id="Text1" runat="server" />
<% Text1.Text = this.Text;%>

UPD: Похоже, что мой вариант не работает, это лучше:

protected void Page_Load(object sender,EventArgs e) 
{
    Text1.Text = this.Text;
}

Ответ 5

В моем коде я использую что-то подобное легко, но в контроле данных, таком как шаблон элемента ListView

 <asp:HyperLink ID="EditAction" class="actionLinks" Visible='<%#Eval("IsTrue").ToString() != "True"%>' runat="server" NavigateUrl='<%# Eval("ContentId","/articles/edit.aspx?articleid={0}")%>' />

Но когда я попытался использовать внешний элемент управления привязкой данных, используя <% #..% > , он просто не работает.

Вы можете легко сделать с

<a href="<%=myHref%>">My href</a> 

Но для серверных элементов управления и вне контроля привязки данных. Нам нужно явно вызвать функцию DataBind() в событии pageload

<asp:Hyperlink ID="aa" NavigateUrl='<%#myHref%>' >

Ответ 6

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

Прежде всего, назначьте идентификатор элементу управления ярлыками, чтобы вы могли получить доступ к элементу управления

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

Затем в вашей функции Page_Load установите значение поля "Текст" ваших меток

protected void Page_Load(object sender, EventArgs e)
{
    myLabel.Text = 'Whatever you want the label to display';
}

Эта функция будет находиться в вашем коде за файлом или, если вы не используете код за моделью, внутри вашей страницы aspx вам понадобится

<script runat="server">
    protected void Page_Load(object sender, EventArgs e)
    {
        myLabel.Text = 'Whatever you want the label to display';
    }
</script>

Удачи.

Ответ 7

Просто добавьте этот маленький самородок для тех, кто хочет получить техническую информацию по проблеме - https://blogs.msdn.microsoft.com/dancre/2007/02/13/the-difference-between-and-in-asp -сеть/

Я думаю, что суть в довольно приличном согласии с другими ответами:

  • Выражения <% = оцениваются во время рендеринга
  • Выражения <% # оцениваются во время DataBind() и вообще не оцениваются, если DataBind() не вызывается.
  • Выражения <% # можно использовать в качестве свойств серверных элементов управления. <% = выражения не могут.