不能将HTML文字输出到asp控件属性中。您可以在代码隐藏中设置超链接NavigateUrl属性,也可以将html锚点输出为文字。
输出的文字(在这种情况下,您的代码隐藏类必须公开保护或公共财产或字段命名UrlParams)
// site.aspx
<a href="<%="http://google.pl" + UrlParams.Google%>">test</a>
设置在隐藏代码:
// site.aspx
<asp:HyperLink runat="server" ID="link1">test</asp:HyperLink>
// site.aspx.cs or <script runat="server">..</script>
protected void Page_Load(..) {
link1.NavigateUrl = "http://google.pl" + UrlParams.Google;
}
并回答了你原来的问题。 <#
是data-binding expression,它在服务器控件属性和数据源之间创建绑定。
编辑:事实证明,你实际上也可以使用<#
语法的字符串。它工作的关键是调用Control.DataBind()方法。您可以在HyperLink控件上甚至在当前页面上调用它,因为Page是从Control继承的。
例子:(把这个空aspx页面 - 无需使用数据源):
<asp:HyperLink ID="link1" runat="server" NavigateUrl='<%# "#Test" %>'>Test</asp:HyperLink>
<script runat="server" type="text/C#">
protected override void OnLoad(EventArgs e)
{
DataBind();
// or:
// link1.DataBind();
base.OnLoad(e);
}
</script>
当我使用'<%='时,它给出了以下输出代码:'">test' – hsz 2010-12-12 18:18:49
我从来没有试过在NavigateUrl属性中使用该标记(我不是故意暗示应该使用该标记标签,我会尽快编辑答案来澄清这一点),但同样,您不需要使用ASP.NET标签为您的NavigateUrl属性分配字符串文字。 – jwiscarson 2010-12-12 18:24:03
是的,我知道,但我想从例如某个班级获得该地址:UrlParams.Google。然后我想这样做:'NavigateUrl ='<%=“http://google.pl”+ UrlParams.Google%>'“,但它不起作用。 – hsz 2010-12-12 18:31:16