19

我正在尝试这样做:

<asp:HyperLink NavigateUrl='<%= WebContext.RootUrl %><%= WebContext.CurrentUser.UserName %>' runat="server" Text='<%= GetProfileImage(WebContext.CurrentUser.AccountId) %>'></asp:HyperLink> 

但是我得到了错误:

这不是scriptlet。将输出为纯文本。

当我将鼠标悬停在我的声明性声明上时。

有任何想法吗?谢谢。

4

4 回答 4

23

您不能使用<%= ... %>文字来设置服务器端控件的属性。

相反,您可以使用普通(客户端)<a>标签,如下所示:

<a href="<%= WebContext.RootUrl %><%= WebContext.CurrentUser.UserName %>"><%= GetProfileImage(WebContext.CurrentUser.AccountId) %></a>

如果GetProfileImage不返回 HTML 标记,请确保将其转义。

于 2010-08-09T16:01:10.443 回答
18

您可以使用数据绑定语法<%# %>。只需确保您的超链接位于数据绑定控件(例如 ListView 项模板)中,或者您DataBind()从代码隐藏中显式调用该控件即可。

于 2010-08-09T16:10:18.597 回答
9

如果您提供IDrunat="server"属性,您仍然可以填充 <asp:HyperLink>。然后,您可以从代码隐藏中设置 HyperLink 的任何属性。

ASP 代码:

<asp:HyperLink ID="myLink" runat="server"/>

代码隐藏:

public void Page_Init()
{
    myLink.NavigateURL = WebContext.RootUrl + WebContext.CurrentUser.UserName;
    myLink.Text = GetProfileImage(WebContext.CurrentUser.AccountId);
}
于 2010-11-24T23:30:26.027 回答
2
<a href='<%= WebContext.RootUrl %><%= WebContext.CurrentUser.UserName %>'><%= GetProfileImage(WebContext.CurrentUser.AccountId) %></a>
于 2010-08-09T16:04:02.360 回答