2012-06-11 29 views
5

Trong ASP.NET, bằng cách sử dụng VB, làm thế nào tôi có thể làm điều này trên trang riêng của mình, không phải trong mã phía sau?Logic điều kiện bên trong điều khiển lặp lại?

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

Có ví dụ của bạn làm việc? – jrummell

+0

Không, nó không hoạt động. – lgriffin

+0

Tuyệt vời, nó hoạt động như thế nào? Bạn có nhận được lỗi biên dịch không? một ngoại lệ thời gian chạy? – jrummell

Trả lời

4

Tạo thuộc tính boolean trong nguồn dữ liệu của bạn, ví dụ: filenameExists và sử dụng này để DataBind so với tài sản nhìn thấy của một HyperLink

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

Ok điều này đã cho tôi chỉ đúng hướng, cảm ơn. – lgriffin

0

Bạn đang thiếu dấu ngoặc mở và đóng cho IfEnd If:

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

Đó là một khởi đầu đúng hướng, nhưng tôi nhận được điều này khi chạy trong trình duyệt: Trình biên dịch Thông báo lỗi: BC30451: Tên 'Container' không được khai báo. – lgriffin

+0

Nếu tôi nhớ đúng, 'Vùng chứa' chỉ có sẵn với cú pháp DataBinding (' <%# %> '). Nếu tôi là đúng (nó được một thời gian kể từ khi tôi làm việc với WebForms), đi với câu trả lời của graham. – jrummell

+0

Sẽ làm, cảm ơn thời gian của bạn. – lgriffin

1

Đã kết thúc sử dụng này, cảm ơn cho kẻ giúp đỡ của bạn!

Trên trang:

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

Mã đằng sau:

Function showPDF(ByVal pdf As String) As Boolean 
    If pdf <> "" Then 
     Return True 
    Else 
     Return False 
    End If 
End Function 
Các vấn đề liên quan