【问题标题】:Optional ASP Hyperlink可选的 ASP 超链接
【发布时间】:2011-05-27 08:16:20
【问题描述】:
我在中继器中有一些公司名称,每个公司可能有也可能没有链接。
<asp:HyperLink runat="server" Visible="false">
<asp:Literal runat="server" ID="CompanyName" />
</asp:HyperLink>
如果我将 NavigateUrl 设置为 null,它仍会在 HTML 中呈现 <a> 标记。如果我将它设置为 Visible=False,它不会呈现公司名称。如果没有 NavigateUrl,是否可以删除 HyperLink 但保留公司名称?
【问题讨论】:
标签:
.net
asp.net
webforms
hyperlink
【解决方案1】:
<asp:Literal runat="server" Text='<%# Eval("CompanyName") %>' Visible='<%# string.IsNullOrEmpty(Eval("CompanySiteUrl") as string) %>' />
<asp:HyperLink runat="server" NavigateUrl='<%# Eval("CompanySiteUrl") %>' Visible='<%# !string.IsNullOrEmpty(Eval("CompanySiteUrl") as string) %>'>
<%# Eval("CompanyName") %>
</asp:HyperLink>
【解决方案2】:
有几种方法可以做到这一点。一种是使用代码块构建 html
<%#IIF(CompanyName <> "", "<a href='" & Eval("CompanySiteUrl") & "'>" & Eval("CompanyName") & "</a>", Eval("CompanyName"))%>
或者您可以创建一个可以调用的公共方法,然后在该方法中构建 html
<%#BuildCompanyUrl(Eval("CopmanySiteUrl"), Eval("CompanyName"))%>
Public Function BuildCompanyUrl(ByVal CompanySiteUrl as string, ByVal Copmanyname as string) As String
' build up the logic here and return the html
return "<a href="......."
End Function