这个可以正常工作:
<span value="<%= this.Text %>" />
这个不起作用:
<asp:Label Text="<%= this.Text %>" runat="server" />
为什么会这样呢?
我该怎么样才能让第二种情况正常工作,即将标签的文本设置为“Text”变量的值?
使用数据绑定表达式
<asp:Label ID="Label1" runat="server" Text="<%# DateTime.Now %>" ></asp:Label>
后端代码
protected void Page_Load(object sender, EventArgs e){
DataBind();
}
你可以做到这一点
<asp:Label ID="Label1" runat="server" ><%= variable%></asp:Label>
<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>
但是对于服务器控件和数据绑定控件之外的情况,我们需要在PageLoad事件中显式调用DataBind()方法。
<asp:Hyperlink ID="aa" NavigateUrl='<%#myHref%>' >
您需要在代码中设置服务器控件的值。
首先,为标签控件分配一个ID,以便您可以访问该控件。
<asp:Label ID="myLabel" runat="server" />
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>
祝你好运。
<asp:Label>
是在运行时编译并转换为 HTML 标签。您可以使用 codebehind 设置文本,也可以像这样设置:<asp:Label id="Text1" runat="server" />
<% Text1.Text = this.Text;%>
更新:看起来我的版本不起作用,这个更好:
protected void Page_Load(object sender,EventArgs e)
{
Text1.Text = this.Text;
}
不确定如何标记此类内容,但这是一个重复的问题。请参阅此线程。
我认为将代码嵌入到您的标记中并不会使您的标记更清晰或更优雅。
- <%=表达式在渲染时计算
- <%#表达式在DataBind()时计算,如果没有调用DataBind()则不计算。
- <%#表达式可以用作服务器控件中的属性。<%=表达式不能。