Repeater控件中的条件逻辑?

6
在ASP.NET中,使用VB,在页面本身而不是在代码后面如何实现这个功能?
<ItemTemplate>
    <%  If Container.DataItem("filename") <> "" Then
        <a href="/pdf/"><%# Container.DataItem("filename") %>Agenda</a>
    End If%>
</ItemTemplate>

太好了,它为什么不工作呢?你是否遇到编译错误?运行时异常? - jrummell
Visual Studio 2010 不喜欢那种格式。它指出我需要插入缺失的 'end if'。这有帮助吗? - lgriffin
3个回答

5
在您的数据源中创建一个布尔属性,例如filenameExists,并使用它来数据绑定到HyperLink的Visible属性。
<asp:HyperLink runat="server" Visible='<%# Eval("filenameExists ") %>' NavigateUrl="/pdf/">Agenda</asp:HyperLink>

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

0

你的 IfEnd If 缺少开放和关闭括号:

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

这是朝着正确方向迈出的一步,但在浏览器中运行时我遇到了这个问题:编译器错误消息:BC30451:名称“Container”未声明。 - lgriffin
如果我没记错的话,Container 只能在数据绑定语法 (<%# %>) 中使用。如果我没错的话(因为我已经有一段时间没有使用 WebForms 了),那就采用 Graham 的答案吧。 - jrummell

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接