如何在服务器控件属性中使用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>
祝你好运。