Необязательная гиперссылка на ASP

#.net #asp.net #webforms #hyperlink

#.net #asp.net #веб-формы #гиперссылка

Вопрос:

У меня есть названия нескольких компаний в Репитере, и у каждой из компаний может быть, а может и не быть ссылки.

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

Если я установлю для NavigateUrl значение null, он по-прежнему будет отображать <a> тег в HTML. Если я установлю для него значение Visible= False, оно не отобразит название компании. Можно ли удалить гиперссылку, но сохранить название компании, если нет NavigateUrl?

Ответ №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='" amp; Eval("CompanySiteUrl") amp; "'>" amp; Eval("CompanyName") amp; "</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