0

我将 LINQ 结果绑定到 ListView 并尝试仅打印“概要”列中的前 250 个字符,但是当我尝试使用 Substring 时出现错误:

System.ArgumentOutOfRangeException:索引和长度必须引用字符串中的位置。参数名称:长度

导致错误的代码是:

<%#:Eval("Synopsis").ToString().Substring(0,250)%>

如果我同时删除 ToString 和 Substring,错误就会消失,但会打印整个概要。我究竟做错了什么?

4

2 回答 2

1

ArgumentOutOfRangeException每当您的起始索引或长度超出字符串长度范围时,您都会遇到异常。在您的情况下,我会说该字符串很可能已经少于 250 个字符。您可能想要类似的东西:

<%#:Eval("Synopsis").ToString().Length > 250 ? Eval("Synopsis").ToString().Substring(0,250) : Eval("Synopsis").ToString()%>

于 2013-04-07T02:28:24.780 回答
0

这意味着概要的长度少于 250 个字符。这可以通过检查字符串的长度是否大于 250 并减少您的请求长度来轻松解决。我不熟悉 LINQ,但这里有一个伪代码解决方案:

var length_of_request;

if length of synopsis < 250 then:
     length_of_request = length of synopsis
else:
     length_of_request = 250

然后调用SubStringwithlength_of_request作为第二个参数。

于 2013-04-07T02:32:07.233 回答