首页 > 解决方案 > 超链接控件:索引超出了数组的范围

问题描述

我有一个名为“文档”的 SQL 列,其中包含所有上传的文档名称,如下所示:test1.doc;test2.pdf;test3.pdf。此列的某些记录没有数据或只有一两个文档。在我的 FormView 中,我有 3 个这样的超链接:

    **//Hyperlink # 1**
    <asp:HyperLink ID="HyperLink1" runat="server" Text='<%# If(Eval("documents") Is DBNull.Value, "No 
    document available", Eval("documents").ToString().Split(";")(0)) %>' NavigateUrl='<%# 
    String.Format("~/documents/uploads/{0}", Eval("documents").ToString().Split(";")(0))  %>' > 
    </asp:HyperLink><br />

**//Hyperlink # 2**
    <asp:HyperLink ID="HyperLink2" runat="server" Text='<%# If(Eval("documents") Is DBNull.Value, "No 
    document available", Eval("documents").ToString().Split(";")(1)) %>' NavigateUrl='<%# 
    String.Format("~/documents/uploads/{0}", Eval("documents").ToString().Split(";")(1))  %>' > 
   </asp:HyperLink><br />

**//Hyperlink # 3**
    <asp:HyperLink ID="HyperLink3" runat="server" Text='<%# If(Eval("documents") Is DBNull.Value, "No 
    document available", Eval("adocuments").ToString().Split(";")(2)) %>' NavigateUrl='<%# 
    String.Format("~/documents/uploads/{0}", Eval("documents").ToString().Split(";")(2))  %>'> 
    </asp:HyperLink>

当文档列只有 1 个文档时,我收到错误消息:索引超出了数组的范围,它指向超链接 #2。但是如果一条记录有 3 个文档名称,它会按预期显示所有 3 条记录。我非常感谢任何帮助或引导我走向正确的方向。

标签: vb.net

解决方案


这很清楚,因为与您一起创建数组.Split并不确定数组长度。因此,通过这个数组传递一个参数来获取一个元素,您必须确保该数组包含该元素,这意味着您需要确保数组长度大于您想要获取的索引。在这种情况下,只需添加一个测试,如下面的代码所示(index是参数 0、1、2 等......)

<%# If(Eval("documents") Is DBNull.Value OrElse Eval("documents").ToString().Split(";").Length < index, "No document available", Eval("documents").ToString().Split(";")(index)) %>

推荐阅读