我有一个asp标签,我需要能够根据后面的代码进行更改。我怎样才能做到这一点?
ASPX :(第一部分仅适用于“[email protected]”,第二部分根据后面代码中的“if”语句动态更改标签(EmailLabel)。如何整合这两个,所以标签是mailto?谢谢。
<p>Email at <a href="mailto:[email protected]?subject=Comments">[email protected]</a>.</p>
<p>Email at <asp:Label ID="EmailLabel" runat="server"></asp:Label>.</p>
代码背后:
public changeLabel()
{
if (//Some Condition Here)
{
this.EmailLabel.Text = "[email protected]";
}
else
{
this.EmailLabel.Text = "[email protected]";
}
}
你想要在那里做什么是行不通的。标签呈现为<span>
标签,因此它永远不会“可点击”。你想做更像这样的事情:
<p>Email at <a href="mailto:[email protected]?subject=Comments">[email protected]</a>.</p>
<p>Email at <asp:LinkButton ID="EmailLabel" runat="server"></asp:LinkButton>.</p>
然后更改Text
属性,而不是更改NavigateUrl
属性。
您还可以使用HtmlControl
,它基本上是您添加runat="server"
属性的标准HTML标记。
<p>Email at <a id="EmailLabel" runat="server" href=""></a>.</p>
然后你可以通过服务器端代码修改这个<a>
标签,属性会略有不同,但现在你有一个真正的实时锚标签可以使用。
这个其他的SO问题也可能有用:How to launching email client on LinkButton click event?
<html>
<body>
<span id="foo"
onclick="document.getElementById('foo').innerHTML = 'never say never'"
>
Click Me!
</span>
</body>
</html>
对于你的Label,只需记住.Text是服务器等效的.innerHTML,这样你就可以在设置.Text时把你想要的任何HTML放到asp:Label中。请注意跨站点脚本攻击。