2012-06-11 3 views
5

В ASP.NET, используя VB, как я могу это сделать на самой странице, а не в коде?Условная логика внутри регулятора ретранслятора?

<ItemTemplate> 
    <% If Container.DataItem("filename") <> "" Then 
     <a href="/pdf/"><%# Container.DataItem("filename") %>Agenda</a> 
    End If%> 
</ItemTemplate> 
+0

Работает ли ваш пример? – jrummell

+0

Нет, это не сработает. – lgriffin

+0

Отлично, как это не работает? Вы получаете ошибку компиляции? исключение во время выполнения? – jrummell

ответ

4

Создайте булево свойство в источнике данных, например. filenameExists и использовать это, чтобы привязка к Видимый свойство HyperLink

<asp:HyperLink runat="server" Visible='<%# Eval("filenameExists ") %>' NavigateUrl="/pdf/">Agenda</asp:HyperLink> 
+0

Хорошо, это заставило меня указать в правильном направлении, спасибо. – lgriffin

0

Вы отсутствующего открывать и закрывать скобки для If и End If:

<ItemTemplate> 
    <% If Container.DataItem("filename") <> "" Then %> 
     <a href="/pdf/"><%# Container.DataItem("filename") %>Agenda</a> 
    <% End If %> 
</ItemTemplate> 
+0

Это начало в правильном направлении, но я получаю это при запуске в браузере: Сообщение об ошибке компилятора: BC30451: Имя «Контейнер» не объявлено. – lgriffin

+0

Если я правильно помню, 'Container' доступен только с синтаксисом DataBinding (' <%# %> '). Если я прав (это было с тех пор, как я работал с WebForms), пойдите с ответом Грэма. – jrummell

+0

Будет, спасибо за ваше время. – lgriffin

1

Законченное используя это, спасибо за вашу помощь, ребята!

На странице:

<asp:Literal ID="ltPDF" runat="server" Visible='<%# showPDF(Container.DataItem("filename")) %>'>Test</asp:Literal> 

Код позади:

Function showPDF(ByVal pdf As String) As Boolean 
    If pdf <> "" Then 
     Return True 
    Else 
     Return False 
    End If 
End Function 
Смежные вопросы