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

这工作:

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

这不起作用:

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

这是为什么?

我怎样才能使第二个案件正常工作,即将标签的文本设置为“文本”variables的值?

不知道如何标记这样的,但这是有点重复。 看到这个线程 。

我不认为将代码embedded到标记中会使标记更清晰或更优雅。

使用数据绑定expression式

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

在我的代码我使用这样的事情很容易,但在像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> 

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

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

<asp:Label>在运行时编译并转换为html标签。 您可以使用代码隐藏设置文本,或者像这样:

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

UPD:看起来像我的变种不工作,这是更好的:

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

您将需要在代码中设置服务器控件的值

首先,为标签控件分配一个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> 

祝你好运。