vb.net - 超链接控件:索引超出了数组的范围
问题描述
我有一个名为“文档”的 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 条记录。我非常感谢任何帮助或引导我走向正确的方向。
解决方案
这很清楚,因为与您一起创建数组.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)) %>