在asp:超链接中分配声明性值的问题.错误:这不是scriptlet.将以纯文本格式输出

Pet*_*ter 19 asp.net declarative hyperlink

我想这样做:

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

但我得到错误:

这不是scriptlet.将以纯文本格式输出.

当我把鼠标放在我的声明性陈述上时.

有任何想法吗?谢谢.

SLa*_*aks 23

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

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

<a href="<%= WebContext.RootUrl %><%= WebContext.CurrentUser.UserName %>"><%= GetProfileImage(WebContext.CurrentUser.AccountId) %></a>
Run Code Online (Sandbox Code Playgroud)

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


kbr*_*ton 18

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

  • 我很清楚,"#"表示数据绑定,"="表示服务器端值但不一定是数据绑定? (2认同)

don*_*erk 9

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

ASP代码:

<asp:HyperLink ID="myLink" runat="server"/>
Run Code Online (Sandbox Code Playgroud)

代码隐藏:

public void Page_Init()
{
    myLink.NavigateURL = WebContext.RootUrl + WebContext.CurrentUser.UserName;
    myLink.Text = GetProfileImage(WebContext.CurrentUser.AccountId);
}
Run Code Online (Sandbox Code Playgroud)