这有效:
<span value="<%= this.Text %>" />
这不起作用:
<asp:Label Text="<%= this.Text %>" runat="server" />
为什么?
如何使第二种情况正常工作,即将标签的文本设置为“文本”变量的值?
答案 0 :(得分:53)
<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()则完全不求值。
- <%#表达式可用作服务器端控件中的属性。 <%=表达式不能。