如何在服务器控件属性中使用ASP.NET<%=标记?

时间:2009-09-08 11:00:37

标签: asp.net tags

这有效:

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

这不起作用:

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

为什么?

如何使第二种情况正常工作,即将标签的文本设置为“文本”变量的值?

7 个答案:

答案 0 :(得分:53)

使用Data binding expressions

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

代码背后,

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

答案 1 :(得分:13)

你可以这样做

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

答案 2 :(得分:7)

<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;
}

答案 3 :(得分:7)

您需要在代码

中设置服务器控件的值

首先,为标签控件分配一个ID,以便访问控件

<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>
祝你好运。

答案 4 :(得分:7)

在我的代码中,我很容易使用类似这样的东西,但是像数据库控件一样使用ListView项目模板

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

但是当我尝试在数据绑定控件之外使用&lt;%#..%&gt;时,它根本不起作用。

您可以轻松完成

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

但是对于服务器控件,以及数据绑定控件之外。我们需要在pageload事件中明确调用DataBind()

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

答案 5 :(得分:6)

不确定如何标记这样,但这有点重复。 See this thread

我不认为在您的标记中嵌入代码会使您的标记更加清晰或更优雅。

答案 6 :(得分:0)

只是为希望对该问题进行详细技术分析的人介绍这个小块-https://blogs.msdn.microsoft.com/dancre/2007/02/13/the-difference-between-and-in-asp-net/

我认为症结与其他答案相当相符:

  
      
  • <%=表达式在渲染时求值
  •   
  • <%#表达式在DataBind()时求值,如果不调用DataBind()则完全不求值。
  •   
  • <%#表达式可用作服务器端控件中的属性。 <%=表达式不能。
  •