2011-05-27 150 views
1

我在Repeater中有一些公司名称,并且每个公司可能有也可能没有链接。可选的ASP超链接

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

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

回答

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

有几种方法可以做到这一点。其中之一是使用一个代码块

<%#IIF(CompanyName <> "", "<a href='" & Eval("CompanySiteUrl") & "'>" & Eval("CompanyName") & "</a>", Eval("CompanyName"))%> 

建立起来的HTML或者你可以创建一个你可以打电话,然后就建立在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