可选ASP超链接

时间:2011-05-27 08:16:20

标签: .net asp.net webforms hyperlink

我在Repeater中有一些公司名称,每家公司可能有也可能没有链接。

<asp:HyperLink runat="server" Visible="false">
    <asp:Literal runat="server" ID="CompanyName" />
</asp:HyperLink>

如果我将NavigateUrl设置为null,它仍然会在HTML中呈现<a>标记。如果我将其设置为Visible = False,则不会呈现公司名称。如果没有NavigateUrl,是否可以删除HyperLink但保留公司名称?

2 个答案:

答案 0 :(得分:2)

<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>

答案 1 :(得分:0)

有几种方法可以做到这一点。一种是使用代码块来构建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